﻿<?xml version="1.0"?>
<doc xmlns="http://schemas.microsoft.com/aos/2008/xmldoc">
  <function name="SpellTargetItem" type="function" />
  <function name="GetNumPackages" type="function">
    <summary>Returns the number of packages.</summary>
    <return name="numPackages" type="number">
      <summary>Number of packages.</summary>
    </return>
  </function>
  <function name="TaxiNodeSetCurrent" type="function">
    <summary>Sets the "current" flight path node to a specific index</summary>
    <param name="slot" type="number">
      <summary>The internal index of a flight path node</summary>
    </param>
  </function>
  <function name="GetTrainerServiceTypeFilter" type="function">
    <summary>Queries the enabled state of a filter in the trainer window</summary>
    <param name="type" type="string">
      <summary>The filter type to query</summary>
    </param>
    <return name="isEnabled" type="number" apitype="1nil">
      <summary>1 if the filter is currently enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="InCombatLockdown" type="function">
    <summary>Queries the game client to see if the user interface is currently in protected lockdown mode</summary>
    <return name="inLockdown" type="number" apitype="1nil">
      <summary>1 if the user interface is in protected lockdown mode as a result of combat, otherwise nil</summary>
    </return>
  </function>
  <function name="QueryAuctionItems" type="function">
    <summary>Queries the auction house's listings for the attributes specified</summary>
    <param name="name" type="string" optional="true">
      <summary>The name you want to search for. This is a substring match, not an exact one.</summary>
    </param>
    <param name="minLevel" type="number" optional="true">
      <summary>The minimum item use level you want returned</summary>
    </param>
    <param name="maxLevel" type="number" optional="true">
      <summary>The maximum item use level you want returned</summary>
    </param>
    <param name="invTypeIndex" type="number" optional="true">
      <summary>The inventory type you want to search for, this must be specified as an index according to the following table. The INVTYPE_* tokens are taken from the return values of GetItemInfo().</summary>
    </param>
    <param name="classIndex" type="number" optional="true">
      <summary>The auction item class index as returned by the GetAuctionItemClasses() function.</summary>
    </param>
    <param name="subclassIndex" type="number" optional="true">
      <summary>The auction item class index as returned by the GetAuctionItemSubClasses() function.</summary>
    </param>
    <param name="page" type="number" optional="true">
      <summary>The page of possibilities that you want returned. For example, if the query would return 1000 items, and you want items 300 to 350, then you would ask for page number 7.</summary>
    </param>
    <param name="isUsable" type="boolean" optional="true">
      <summary>True is the you only want items that you can use returned, false otherwise. use is defined as at or below your current character's level for items and at or below your current character's skill for recipies and schematics.</summary>
    </param>
    <param name="qualityIndex" type="number" optional="true">
      <summary>The quality of the items you want returned.</summary>
    </param>
    <param name="getAll" type="boolean" optional="true">
      <summary>True if you want all of the pages retuned at one, false otherwise. This option can only be used once every 15 minutes.</summary>
    </param>
  </function>
  <function name="UnitRace" type="function">
    <summary>Retrieves the units race.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="race" type="string">
      <summary>The localized name of the queried unit's race</summary>
    </return>
    <return name="fileName" type="string">
      <summary>The english name of the queried unit's race, as used in the various artwork files.</summary>
    </return>
  </function>
  <function name="UnitClass" type="function">
    <summary>Queries a unit's class</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="class" type="string">
      <summary>The localized name of the queried unit's class</summary>
    </return>
    <return name="englishClass" type="string">
      <summary>The english name of the queried unit's class, as an uppercase string</summary>
    </return>
  </function>
  <function name="CancelLogout" type="function">
    <summary>Cancels a pending logout</summary>
  </function>
  <function name="CursorHasItem" type="function">
    <summary>Indicates if the cursor is currently holding an item</summary>
    <return name="hasItem" type="number" apitype="1nil">
      <summary>1 if the cursor is currently holding an item, otherwise nil</summary>
    </return>
  </function>
  <function name="EnableAddOn" type="function">
    <summary>Enables an addon for the current character</summary>
    <paramchoice>
      <param name="index" type="number">
        <summary>The index of the addon to be enabled</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the addon to be enabled</summary>
      </param>
    </paramchoice>
  </function>
  <function name="Screenshot" type="function">
    <summary>Takes a screenshot, displaying a message when done</summary>
  </function>
  <function name="GetBattlefieldArenaFaction" type="function" />
  <function name="IsCurrentItem" type="function">
    <summary>Returns true if the item is being used and nothing if it is not</summary>
    <paramchoice>
      <param name="itemID" type="number">
        <summary>An item's ID</summary>
      </param>
      <param name="itemName" type="string">
        <summary>An item's name</summary>
      </param>
      <param name="itemLink" type="string">
        <summary>An item's link</summary>
      </param>
    </paramchoice>
    <return name="isItem" type="number" apitype="1nil">
      <summary>1 if the item is being used or awaiting input (such as a targetted effect)</summary>
    </return>
  </function>
  <function name="GetVoiceStatus" type="function">
    <summary>Returns the voice enabled status of the queried player.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="status" type="number" apitype="1nil">
      <summary>1 if voice is enabled, nil if disabled.</summary>
    </return>
  </function>
  <function name="GetCursorInfo" type="function">
    <summary>Returns information about the object currently held by the cursor</summary>
    <return name="type" type="string">
      <summary>The type of object currently held by the cursor</summary>
    </return>
    <return name="id" type="number">
      <summary>The value depends on the return for "type", but corresponds to the amount of money in copper, the spell id, the item id, the macro index, or the index of the merchant item being held</summary>
    </return>
    <return name="subType" type="string">
      <summary>The subtype of the object being held, depending on the return of "type".  The spellbookType for the spell or the itemLink for the item being held</summary>
    </return>
  </function>
  <function name="GetSpellBonusHealing" type="function">
    <summary>Query player's bonus healing from equipment.</summary>
    <return name="bonusHealing">
      <summary>Sum of healing bonus on player's equipped items.</summary>
    </return>
  </function>
  <function name="debugbreak" type="function" />
  <function name="UnitIsRaidOfficer" type="function">
    <summary>Returns whether or not the given unit is an officer in the raid</summary>
    <param />
    <return name="isOfficer" type="number" apitype="1nil">
      <summary>1 if the given unit is an officer in the raid, nil otherwise</summary>
    </return>
  </function>
  <function name="GetBlockChance" type="function">
    <summary>Returns your block percentage.</summary>
    <return name="chance" type="number">
      <summary>Percentage chance to block</summary>
    </return>
  </function>
  <function name="IsEquippedItem" type="function">
    <summary>Returns whether or not the supplied item is currently equipped by the player</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>A name of an item</summary>
      </param>
      <param name="itemId" type="number" apitype="itemid">
        <summary>A item's itemId</summary>
      </param>
    </paramchoice>
    <return name="isEquipped" type="number" apitype="1nil">
      <summary>1 if the item is equipped, otherwise nil</summary>
    </return>
  </function>
  <function name="GetTitleName" type="function">
    <summary>Retrieve a title string from a title ID</summary>
    <param name="titleMaskID">
      <summary>Index of the title name to query</summary>
    </param>
    <return name="titleName" type="string">
      <summary>The name of the title requested</summary>
    </return>
  </function>
  <function name="GetCurrentMapZone" type="function">
    <summary>Returns the number of the zone currently shown on the World Map</summary>
    <return name="zone" type="number">
      <summary>The number of the zone currently shown on the World Map</summary>
    </return>
  </function>
  <function name="CollapseFactionHeader" type="function">
    <summary>Collapses a given faction header</summary>
    <param name="index" type="number">
      <summary>The index of the faction header to collapse</summary>
    </param>
  </function>
  <function name="SelectGossipActiveQuest" type="function">
    <summary>Selects an active quest in the gossip dialog</summary>
    <param name="index" type="number">
      <summary>The index of an active quest in the gossip dialog</summary>
    </param>
  </function>
  <function name="GetChannelRosterInfo" type="function">
    <summary>Returns information about a user in a given channel</summary>
    <param name="id" type="number">
      <summary>The index of the channel the query</summary>
    </param>
    <param name="rosterIndex" type="number">
      <summary>The index of the player in the given channel</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player</summary>
    </return>
    <return name="owner" type="number" apitype="1nil">
      <summary>1 if the player is the channel owner, otherwise nil</summary>
    </return>
    <return name="moderator" type="number" apitype="1nil">
      <summary>1 if the player is the channel moderator, otherwise nil</summary>
    </return>
    <return name="muted" type="number" apitype="1nil">
      <summary>1 if the player is muted, otherwise nil</summary>
    </return>
    <return name="active" type="number" apitype="1nil">
      <summary>1 if the player is currently speaking in the channel, otherwise nil</summary>
    </return>
    <return name="enabled" type="number" apitype="1nil">
      <summary>1 if the player has voice chat enabled in the channel, otherwise nil</summary>
    </return>
  </function>
  <function name="IsAddOnLoadOnDemand" type="function">
    <summary>Returns whether or not a given addon can be loaded on demand</summary>
    <param name="index" type="number">
      <summary>The index of the addon to query</summary>
    </param>
    <param name="name" type="string">
      <summary>The name of the addon to query</summary>
    </param>
    <return name="isLod" type="number" apitype="1nil">
      <summary>1 if the addon is capable of load on demand, otherwise nil</summary>
    </return>
  </function>
  <function name="SetArenaTeamRosterSelection" type="function">
    <summary>Selects a specific member from an arena team roster</summary>
    <param name="team" type="number">
      <summary>The index of the arena team</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the player to select</summary>
    </param>
  </function>
  <function name="RegisterCVar" type="function">
    <summary>Registers a configuration variable to be saved</summary>
    <param name="cvar" type="string">
      <summary>The name of a CVar to register</summary>
    </param>
    <param name="default" type="string">
      <summary>The default value of the CVar</summary>
    </param>
  </function>
  <function name="LoggingChat" type="function">
    <summary>Toggle logging of chat to Logs/WowChatLog.txt. Toggle = true to turn on logging, Toggle = false to turn off logging, nil to query logging status.</summary>
    <param name="toggle" type="boolean">
      <summary>Toggle on or off, defaults to nil.</summary>
    </param>
    <return name="isLogging" type="number" apitype="1nil">
      <summary>Chat logging flag.</summary>
    </return>
  </function>
  <function name="GetDailyQuestsCompleted" type="function">
    <summary>Returns the number of daily quests the player already completed today.</summary>
    <return name="dailyQuestsComplete" type="number">
      <summary>The number of daily quests the player completed.</summary>
    </return>
  </function>
  <function name="GetContainerItemCooldown" type="function">
    <summary>Returns information about the cooldown for an item in one of your bags</summary>
    <param name="index" type="number">
      <summary>The index of the container</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot within the given container</summary>
    </param>
    <return name="start" type="number">
      <summary>The time the cooldown started with millisecond precision.  This is the value of GetTime() at the moment the cooldown began.</summary>
    </return>
    <return name="duration" type="number">
      <summary>The duration of the cooldown in seconds</summary>
    </return>
    <return name="enable" type="number" apitype="1nil">
      <summary>1 if the item has a possible cooldown, otherwise 0</summary>
    </return>
  </function>
  <function name="PickupMacro" type="function">
    <summary>Simulates picking up a macro from the macro window, placing it on the cursor</summary>
    <paramchoice>
      <param name="macroId" type="number">
        <summary>The macroId of the macro to pick up</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of a macro</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetExistingSocketInfo" type="function">
    <summary>Returns information about the jewel in a given socket for the item in the item socketing interface</summary>
    <param name="index" type="number">
      <summary>The index of the socket</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the jewel currently in the given socket (nil if no jewel is socketed in this socket)</summary>
    </return>
    <return name="texture" type="string">
      <summary>The texture of the icon of the jewel currently in the given socket (nil if no jewel is socketed in this socket)</summary>
    </return>
    <return name="name" type="number" apitype="1nil">
      <summary>1 if the jewel currently in the socket matches the socket's color (nil if no jewel is socketed in this socket)</summary>
    </return>
  </function>
  <function name="KBQuery_IsLoaded" type="function">
    <summary>Returns whether or not a knowledge base query was loaded successfully</summary>
    <return name="isLoaded" type="boolean">
      <summary>true is the previous knowledge base query was successful, otherwise false</summary>
    </return>
  </function>
  <function name="GetMinigameType" type="function">
    <summary>Returns the minigame type of the active minigame</summary>
    <return name="gameType" type="string">
      <summary>Returns the type of minigame used</summary>
    </return>
  </function>
  <function name="ClearTarget" type="function">
    <summary>Clears the player's current target</summary>
  </function>
  <function name="MovieRecording_GetViewportWidth" type="function">
    <summary>Queries the current width of the game's viewport</summary>
    <return name="width" type="number">
      <summary>The current width of the World of Warcraft viewport</summary>
    </return>
  </function>
  <function name="FollowUnit" type="function">
    <summary>Follows a specified player</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitId of the player to follow</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of a player to follow</summary>
      </param>
    </paramchoice>
  </function>
  <function name="ChannelVoiceOn" type="function">
    <summary>Enables voice chat in the given channel</summary>
    <param />
  </function>
  <function name="CommentatorSetPlayerIndex" type="function" />
  <function name="GetPetitionNameInfo" type="function">
    <summary>Returns the name of the player that has signed a given petition slot</summary>
    <param name="index" type="number">
      <summary>The signature slot in the open petition</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player that has signed the given slot</summary>
    </return>
  </function>
  <function name="Sound_ChatSystem_GetOutputDriverNameByIndex" type="function">
    <summary>Returns the name of the given chat system sound output driver</summary>
    <param name="index" type="number">
      <summary>The desired index</summary>
    </param>
  </function>
  <function name="IsHarmfulSpell" type="function">
    <summary>Returns whether or not a given spell is harmful</summary>
    <param name="spell" type="string">
      <summary>The name of the spell to query</summary>
    </param>
    <return name="isHarmful" type="number" apitype="1nil">
      <summary>1 if the spell is harmful, otherwise nil</summary>
    </return>
  </function>
  <function name="ClickSendMailItemButton" type="function">
    <summary>Causes the item currently being held by the cursor to be placed in the mailbox send item slot</summary>
    <param name="index" type="number">
      <summary>The index of an item slot in the "Send Mail" panel (1-12).  This value defaults to the first available slot.  If an invalid index is specified or the item slots are full, an error message will be printed to the UIErrorsFrame.</summary>
    </param>
    <param name="autoReturn" type="boolean">
      <summary>If true, items picked up from item slots will automatically be returned to the player's bags, otherwise they will be placed on the cursor.</summary>
    </param>
  </function>
  <function name="UnitXPMax" type="function">
    <summary>Return the total amount of XP required to the next level.</summary>
    <param name="unit" type="string">
      <summary>The name of the unit to query.</summary>
    </param>
    <return name="playerMaxXP" type="number">
      <summary>The total amount of XP required to the next level.</summary>
    </return>
  </function>
  <function name="DeclineInvite" type="function">
    <summary>Declines a pending chat channel invitation</summary>
  </function>
  <function name="SetTradeSkillSubClassFilter" type="function">
    <summary>Enables or disables a given tradeskill subclass filter</summary>
    <param name="index" type="number">
      <summary>The index of a return from GetTradeSkillSubClasses()</summary>
    </param>
    <param name="enable" type="number" apitype="1nil">
      <summary>1 to enabled, nil to disable</summary>
    </param>
    <param name="exclusive" type="number" apitype="1nil">
      <summary>1 to disable all other filters when enabling this one, otherwise nil</summary>
    </param>
    <return name="isVisible" type="number" apitype="1nil">
      <summary>Whether items corresponding to the filter are visible (1) or not (nil)</summary>
    </return>
  </function>
  <function name="GetActionText" type="function">
    <summary>Returns the label for a given action slot.</summary>
    <param name="slot" type="number">
      <summary>The action slot to query</summary>
    </param>
    <return name="text" type="string">
      <summary>The label for the action slot, or nil</summary>
    </return>
  </function>
  <function name="AcceptResurrect" type="function">
    <summary>Accepts a pending resurrection spell</summary>
  </function>
  <function name="UnitCharacterPoints" type="function">
    <summary>Returns the number of unused talent points and profession slots for the given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit of interest</summary>
    </param>
    <return name="talentPoints" type="number">
      <summary>The number unspent talent points for the unit</summary>
    </return>
    <return name="professionSlots" type="number">
      <summary>The number of available main profession slots for the unit</summary>
    </return>
  </function>
  <function name="AddTradeMoney" type="function">
    <summary>Adds the money currently on the cursor to the trade window</summary>
  </function>
  <function name="SetOverrideBindingItem" type="function">
    <summary>Sets an override binding to use a specific item</summary>
    <param name="owner" type="table">
      <summary>The frame responsible for setting the override</summary>
    </param>
    <param name="isPriority" type="boolean">
      <summary>Indicates that this is a priority override binding</summary>
    </param>
    <param name="key" type="string">
      <summary>The key to bind to the button (e.g. "CTRL-2")</summary>
    </param>
    <param name="itemName" type="string">
      <summary>The name of the item to use when the binding is triggered</summary>
    </param>
  </function>
  <function name="ComplainChat" type="function">
    <summary>Files a complaint about a given chat message</summary>
    <paramchoice>
      <param name="lineID" type="number">
        <summary>The unique lineID of a message in a ChatFrame.</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of a player to complain about</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetChatWindowInfo" type="function">
    <summary>Retrieves information about a specific Chat window</summary>
    <param name="index" type="number">
      <summary>Index of the window you wish you get information on (starts at 1)</summary>
    </param>
    <return name="name" type="string">
      <summary>Name of the Chat window</summary>
    </return>
    <return name="fontSize" type="number">
      <summary>Font size of the text in Chat window</summary>
    </return>
    <return name="r" type="number">
      <summary>The red component of the window's background color [0.0, 1.0]</summary>
    </return>
    <return name="g" type="number">
      <summary>The green component of the window's background color [0.0, 1.0]</summary>
    </return>
    <return name="b" type="number">
      <summary>The blue component of the window's background color [0.0, 1.0]</summary>
    </return>
    <return name="alpha" type="number">
      <summary>The alpha level (opacity) of the window's background [0.0, 1.0]</summary>
    </return>
    <return name="shown" type="number">
      <summary>Returns 1 if the window is shown, 0 if it is hidden</summary>
    </return>
    <return name="locked" type="number">
      <summary>Returns 1 if the window is locked, 0 if it is movable</summary>
    </return>
    <return name="docked" type="number">
      <summary>Returns 1 if the window is docked, 0 if free</summary>
    </return>
  </function>
  <function name="SetActiveVoiceChannel" type="function">
    <summary>Sets the currently active voice channel</summary>
    <param name="index" type="number">
      <summary>The index of the channel in the channel display window.  These indices are offset by any headers that are displayed in this window.</summary>
    </param>
  </function>
  <function name="CommentatorAddPlayer" type="function" />
  <function name="AddMute" type="function">
    <summary>Mutes a player in voice chat</summary>
    <param name="fullname" type="string">
      <summary>The name of the player to be muted</summary>
    </param>
  </function>
  <function name="collectgarbage" type="function" />
  <function name="GetTradeSkillSubClassFilter" type="function">
    <summary>Returns whether or not a given tradeskill filter is enabled</summary>
    <param name="index" type="number">
      <summary>The index of a return from GetTradeSkillSubClasses(), or 0 for the "All" filter.</summary>
    </param>
    <return name="enabled" type="number" apitype="1nil">
      <summary>1 if the filter is enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="GetItemGem" type="function">
    <summary>Returns the name and link for a gem in a specific item socket</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>The name of an item</summary>
      </param>
      <param name="itemLink" type="string">
        <summary>A valid item link</summary>
      </param>
    </paramchoice>
    <return name="name" type="string">
      <summary>The name of the gem in the socket, or nil</summary>
    </return>
    <return name="link" type="string">
      <summary>The item link for the gem in the socket</summary>
    </return>
  </function>
  <function name="GetVoiceSessionMemberInfoBySessionID" type="function">
    <summary>Returns information about a member of a given voice session.</summary>
    <param name="session" type="number">
      <summary>ID of the voice session</summary>
    </param>
    <param name="index" type="number">
      <summary>Index of the voice session member.</summary>
    </param>
    <return name="name" type="string">
      <summary>Name of the player.</summary>
    </return>
    <return name="voiceActive" type="number" apitype="1nil">
      <summary>1 if the player has voice active, nil otherwise.</summary>
    </return>
    <return name="sessionActive" type="number" apitype="1nil">
      <summary>1 if the players voice is set to this session, nil otherwise.</summary>
    </return>
    <return name="muted" type="number" apitype="1nil">
      <summary>1 if you muted that player, nil otherwise.</summary>
    </return>
    <return name="squelched" type="number" apitype="1nil">
      <summary>1 if the player was silenced by the channel moderator, nil otherwise.</summary>
    </return>
  </function>
  <function name="CloseItemText" type="function">
    <summary>Closes the item text display frame.</summary>
  </function>
  <function name="GetMoney" type="function">
    <summary>Return the amount of money the player currently possesses.</summary>
    <return name="money" type="number">
      <summary>Amount of money the player possesses - in copper.</summary>
    </return>
  </function>
  <function name="CommentatorSetCamera" type="function" />
  <function name="ClearInspectPlayer" type="function">
    <summary>Clears the data for the currently inspected player</summary>
  </function>
  <function name="SortAuctionApplySort" type="function">
    <summary>Applys the currently configured sort for the given auction type</summary>
    <param name="type" type="string">
      <summary>The auction listing type</summary>
    </param>
  </function>
  <function name="CheckPetUntrainerDist" type="function">
    <summary>Returns whether or not the player is in range of a Pet Trainer</summary>
    <return name="inRange" type="number" apitype="1nil">
      <summary>1 if you are in range of a Pet Trainer, otherwise nil.</summary>
    </return>
  </function>
  <function name="SetGuildInfoText" type="function">
    <summary>Sets the guild information text.</summary>
    <param name="text" type="string">
      <summary>The guild information text to be set</summary>
    </param>
  </function>
  <function name="GetZonePVPInfo" type="function">
    <summary>Returns PVP information about the current zone</summary>
    <return name="pvpType" type="string">
      <summary>The type of PVP zone</summary>
    </return>
    <return name="isSubZonePVP" type="number" apitype="1nil">
      <summary>1 if the current zone allows free-for-all PVP</summary>
    </return>
    <return name="factionName" type="string">
      <summary>The name of the faction that controls the zone, if the pvpType was friendly or hostile</summary>
    </return>
  </function>
  <function name="GetTradeTargetItemInfo" type="function">
    <summary>Returns information about an item in the trade window</summary>
    <param name="index" type="number">
      <summary>The index in the trade window</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
    <return name="numItems" type="number">
      <summary>The number of items in the stack</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality level of the item</summary>
    </return>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the item is usable by the player, otherwise nil</summary>
    </return>
    <return name="enchantment" type="string">
      <summary>The name of the enchantment being applied to the item, if applicable</summary>
    </return>
  </function>
  <function name="GetLootSlotInfo" type="function">
    <summary>Returns the information for a loot slot item</summary>
    <param name="slot" type="number">
      <summary>The index of the loot item</summary>
    </param>
    <return name="texture" type="string">
      <summary>The path of the graphical icon for the item</summary>
    </return>
    <return name="item" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="quantity" type="number">
      <summary>The quantity of the item in the stack. Quantity for coins is always 0</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality of the item</summary>
    </return>
    <return name="locked" type="boolean">
      <summary>Whether the item is locked by having an action run on it currently.</summary>
    </return>
  </function>
  <function name="DisableAddOn" type="function">
    <summary>Disables an addon by name or index</summary>
    <param name="name" type="string">
      <summary>The name of the addon to disable</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the addon in the addon listing</summary>
    </param>
  </function>
  <function name="ConfirmBinder" type="function">
    <summary>Confirms a new hearthstone location</summary>
  </function>
  <function name="UnitInBattleground" type="function">
    <summary>Returns whether or not a unit is in the player's battleground</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="raidNum" type="number">
      <summary>The raid index of the unit in your battleground, or nil.</summary>
    </return>
  </function>
  <function name="GetCVarDefault" type="function">
    <summary>Query the default value for a given CVar. Will error if CVar does not exist.</summary>
    <param name="CVar" type="string">
      <summary>CVar to query.</summary>
    </param>
    <return name="value" type="string">
      <summary>Default value of the CVar</summary>
    </return>
  </function>
  <function name="GetNumBankSlots" type="function">
    <summary>Returns information about purchased bank bag slots</summary>
    <return name="numSlots" type="number">
      <summary>The number of slots you have purchased</summary>
    </return>
    <return name="isFull" type="number" apitype="1nil">
      <summary>A flag indicating that you cannot purchase any more slots</summary>
    </return>
  </function>
  <function name="GetInventoryItemLink" type="function">
    <summary>Returns an item link for an inventory item</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <param name="inventoryID" type="number">
      <summary>The inventoryID to query</summary>
    </param>
    <return name="link" type="string">
      <summary>An item link for the given item</summary>
    </return>
  </function>
  <function name="GetQuestLogRewardSpell" type="function">
    <summary>Returns information about a quest reward spell</summary>
    <return name="texture" type="string">
      <summary>The path to the spell icon's texture</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the spell</summary>
    </return>
    <return name="isTradeskillSpell" type="number" apitype="1nil">
      <summary>1 if the spell is a tradeskill recipe, otherwise nil</summary>
    </return>
    <return name="idSpellLearned" type="number" apitype="1nil">
      <summary>1 if the reward spell will be learnt, otherwise nil</summary>
    </return>
  </function>
  <function name="SaveView" type="function">
    <summary>Saves the current camera view to one of the stored camera positions</summary>
    <param name="index" type="number">
      <summary>A camera index between 1 and 6</summary>
    </param>
  </function>
  <function name="PickupBagFromSlot" type="function">
    <summary>Picks up a bag from an inventory slot, or bank bag slot and holds it on the cursor</summary>
    <param name="inventoryID" type="number">
      <summary>The inventoryID of a bag slot</summary>
    </param>
  </function>
  <function name="AbandonSkill" type="function">
    <summary>Confirms abandoning a skill</summary>
    <param name="index" type="number">
      <summary>The index of the skill to abandon</summary>
    </param>
  </function>
  <function name="gcinfo" type="function">
    <summary>Returns the total addon memory usage in kilobytes.</summary>
    <return name="count" type="number">
      <summary>Addon Memory usage in kilobytes.</summary>
    </return>
  </function>
  <function name="MovieRecording_DataRate" type="function">
    <summary>Returns the data rate required per second for recording video.</summary>
  </function>
  <function name="GetAuctionHouseDepositRate" type="function">
    <summary>Returns the current auction house deposit rate</summary>
    <return name="rate" type="number">
      <summary>The current auction house deposit rate</summary>
    </return>
  </function>
  <function name="IsModifierKeyDown" type="function">
    <summary>Returns whether or not a modifier key is held down</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if any modifier key is held down, otherwise nil</summary>
    </return>
  </function>
  <function name="GetArenaTeamRosterShowOffline" type="function">
    <summary>Returns whether or not the "Show Offline Members" filter for arena teams is enabled</summary>
    <return name="showOffline" type="number" apitype="1nil">
      <summary>1 if the show offline filter for arena teams is enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="GetTrainerServiceNumAbilityReq" type="function">
    <summary>Returns the number of ability requirements to learn a given spell.</summary>
    <param name="id" type="number">
      <summary>The index in the trainer window</summary>
    </param>
    <return name="numRequirements" type="number">
      <summary>The number of ability requirements that much be fulfilled in order to learn the given skill.  The details about each specific requirement can be queried using GetTrainerServiceAbilityReq.  An ability requirement is a pre-requisite spell that must be known in order to learn a future rank, such as Arcane Explosion(Rank 2)  which requires Arcane Explosion(Rank 1).</summary>
    </return>
  </function>
  <function name="CommentatorGetCurrentMapID" type="function" />
  <function name="GuildControlSetRankFlag" type="function">
    <summary>Sets the current rank permission to enabled or disabled.</summary>
    <param name="index" type="number">
      <summary>The index for the flag you wish to change.</summary>
    </param>
    <param name="enabled" type="boolean">
      <summary>Enables or disables the flag.</summary>
    </param>
  </function>
  <function name="GetDeathReleasePosition" type="function">
    <summary>Returns the location of the graveyard where your spirit will appear when it is released from your body</summary>
    <return name="x" type="number">
      <summary>X position on the map between 0 and 1</summary>
    </return>
    <return name="y" type="number">
      <summary>Y position on the map between 0 and 1</summary>
    </return>
  </function>
  <function name="GetNumGuildBankTransactions" type="function">
    <summary>Returns the number of transactions for the specified guild bank tab.</summary>
    <param name="tab" type="number">
      <summary>The index of the guild bank tab to query.</summary>
    </param>
    <return name="numTransactions" type="number">
      <summary>The number of transactions that happend on the selected guild bank tab.</summary>
    </return>
  </function>
  <function name="PickupInventoryItem" type="function">
    <summary>Picks an inventory item up and holds it on the cursor</summary>
    <param name="id" type="number">
      <summary>The id of an inventory slot</summary>
    </param>
  </function>
  <function name="GetQuestLogRewardHonor" type="function">
    <summary>Returns the amount of honor rewarded for completing the currently selected quest in the quest log</summary>
    <return name="honor" type="number">
      <summary>The amount of honor rewarded for completing the quest</summary>
    </return>
  </function>
  <function name="GetNumModifiedClickActions" type="function">
    <summary>Returns the number of registeredd modifed click actions.</summary>
    <return name="num" type="number">
      <summary>The number of modified click actions. This function may return a nonsense value when there are no modified click actions loaded.</summary>
    </return>
  </function>
  <function name="SetArenaTeamRosterShowOffline" type="function">
    <summary>Enables or disables the showing of offline arena team members</summary>
    <param name="enable" type="boolean">
      <summary>Any true value other than 0 will enable showing offline members, 0, false or nil will disable.</summary>
    </param>
  </function>
  <function name="UnitDamage" type="function">
    <summary>Unit Damage returns information about your current damage stats.</summary>
    <param name="unit" type="string">
      <summary>UnitID to get information for.</summary>
    </param>
    <return name="minDamage" type="number">
      <summary>The unit's minimum melee damage</summary>
    </return>
    <return name="maxDamage" type="number">
      <summary>The unit's maximum melee damage</summary>
    </return>
    <return name="minOffHandDamage" type="number">
      <summary>The unit's minimum offhand melee damage</summary>
    </return>
    <return name="maxOffHandDamage" type="number">
      <summary>The unit's maximum offhand melee damage</summary>
    </return>
    <return name="physicalBonusPos" type="number">
      <summary>Positive physical bonus (should be &gt;= 0)</summary>
    </return>
    <return name="physicalBonusNeg" type="number">
      <summary>Negative physical bonus (should be &lt;= 0)</summary>
    </return>
    <return name="percent" type="number">
      <summary>Percentage modifier. Usually 1; 0.9 for warriors in defensive stance</summary>
    </return>
  </function>
  <function name="CombatLogResetFilter" type="function">
    <summary>Clears the combat log filter</summary>
  </function>
  <function name="UnitInParty" type="function">
    <summary>Returns whether or not a given unit is in the player's party.</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query for party membership</summary>
    </param>
    <return name="inParty" type="number" apitype="1nil">
      <summary>1 if the unit is in the player's party, otherwise nil.</summary>
    </return>
  </function>
  <function name="PickupAction" type="function">
    <summary>Picks up an action bar slot and holds it on the cursor</summary>
    <param name="slot" type="number">
      <summary>An actionbar slot</summary>
    </param>
  </function>
  <function name="GetBattlefieldInstanceExpiration" type="function">
    <summary>When a battleground match is over, returns the amount of time remaining before the instance is closed and all players are returned to the locations from which they entered it.</summary>
    <return name="timeLeft" type="number">
      <summary>If in a battleground after a finished match, the amount of time remaining (in milliseconds) before the instance shuts down; otherwise 0.</summary>
    </return>
  </function>
  <function name="ChannelBan" type="function">
    <summary>Bans a player from a given chat channel</summary>
    <param name="channel" type="string">
      <summary>The name of the channel</summary>
    </param>
    <param name="fullname" type="string">
      <summary>The name of the player to be banned</summary>
    </param>
  </function>
  <function name="CommentatorGetMode" type="function" />
  <function name="ChannelMute" type="function">
    <summary>Turns off the specified player's ability to speak in the channel</summary>
    <param name="channel" type="string">
      <summary>The channel on which to mute the selected player</summary>
    </param>
    <param name="player" type="string">
      <summary>The name of the player to mute on the selected channel</summary>
    </param>
  </function>
  <function name="strchar" type="function">
    <summary>This function is simply an alias for string.char</summary>
  </function>
  <function name="DelMute" type="function">
    <summary>Removes a voice mute for a given player</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitId to be un-muted</summary>
      </param>
      <param name="fullname" type="string">
        <summary>The full name of a player to be muted</summary>
      </param>
    </paramchoice>
  </function>
  <function name="VoiceChat_IsPlayingLoopbackSound" type="function">
    <summary>Returns whether or not the loopsound sound is currently being played</summary>
    <param name="isPlaying" type="number">
      <summary>1 if the loopback sound is currently being played, otherwise nil</summary>
    </param>
  </function>
  <function name="PitchUpStop" type="function">
    <summary>Stops pitching the camera after PitchUpStart() has been called.</summary>
  </function>
  <function name="CombatLogSetRetentionTime" type="function">
    <summary>Sets the amount of time combat log entries will be stored</summary>
    <param name="seconds" type="number">
      <summary>The desired time</summary>
    </param>
  </function>
  <function name="VoiceSelectOutputDevice" type="function">
    <summary>Sets the voice chat output device.</summary>
    <param name="deviceName" type="string">
      <summary>The name of the device, as returned from VoiceEnumerateOutputDevices(index)</summary>
    </param>
  </function>
  <function name="GetSendMailItemLink" type="function">
    <summary>Returns an item link for an item in the send mail window.</summary>
    <param name="slot" type="number">
      <summary>The item slot in the send mail window.  If not specified, this value defaults to 1.</summary>
    </param>
    <return name="link" type="string">
      <summary>The item link for the given send mail item</summary>
    </return>
  </function>
  <function name="CanJoinBattlefieldAsGroup" type="function">
    <summary>Returns whether or not the currently displayed battlefield supports joining as a group</summary>
    <return name="canGroupJoin" type="number" apitype="1nil">
      <summary>1 if the currently displayed battlefield supports joining as a group</summary>
    </return>
  </function>
  <function name="ListChannelByName" type="function">
    <summary>Prints the members of a channel to ChatFrame1.</summary>
    <param name="channelName" type="string">
      <summary>The exact name of a channel to list</summary>
    </param>
  </function>
  <function name="GetBagName" type="function">
    <summary>Returns the name of a bag</summary>
    <param name="index" type="number">
      <summary>A bag index</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the bag, or nil</summary>
    </return>
  </function>
  <function name="SelectQuestLogEntry" type="function">
    <summary>Selects a quest from the quest log as the currently active quest to be shown in the details panel.</summary>
    <param name="index" type="number">
      <summary>The index of the quest to select.</summary>
    </param>
  </function>
  <function name="ClearLookingForGroup" type="function">
    <summary>Clears the player from any LFG/LFM listings or requests</summary>
  </function>
  <function name="BankButtonIDToInvSlotID" type="function">
    <summary>Returns an inventory slot Id mapped from a bank location</summary>
    <param name="buttonID" type="number">
      <summary>A button Id from the bank interface</summary>
    </param>
    <param name="isBag" type="number" apitype="1nil" optional="true">
      <summary>Indicates if the given slot is a bag</summary>
    </param>
    <return name="inventoryId" type="number">
      <summary>An inventory slot Id that can be used in the inventory functions.</summary>
    </return>
  </function>
  <function name="MovieRecording_IsRecording" type="function">
    <summary>Returns whether or not the client is currently recording a movie</summary>
    <return name="isRecording" type="number" apitype="1nil">
      <summary>1 if the client is currently recording, otherwise nil</summary>
    </return>
  </function>
  <function name="ShowBuybackSellCursor" type="function">
    <summary>Shows the buyback/sell cursor</summary>
    <param name="index" type="number">
      <summary>A slotId from the Merchant Buyback window</summary>
    </param>
  </function>
  <function name="ConfirmSummon" type="function">
    <summary>Accepts a summon spell</summary>
  </function>
  <function name="ldexp" type="function">
    <summary>This function is simply an alias for math.ldexp</summary>
  </function>
  <function name="GetNumBattlefieldScores" type="function">
    <summary>Returns the number of scores available in the current battlefield</summary>
    <return name="numScores" type="number">
      <summary>Number of scores in the current battlefield, or 0 if not current in a battlefield,</summary>
    </return>
  </function>
  <function name="deg" type="function">
    <summary>This function is simply an alias for math.deg</summary>
    <param name="radians" type="number">
      <summary>The angle in radians</summary>
    </param>
    <return name="degrees" type="number">
      <summary>The angle in degrees</summary>
    </return>
  </function>
  <function name="GetPetExperience" type="function">
    <summary>Returns the pet's current experience, and the amount required to level</summary>
    <return name="currXP" type="number">
      <summary>The current experience value for the pet</summary>
    </return>
    <return name="nextXP" type="number">
      <summary>The experience required to reach the next level</summary>
    </return>
  </function>
  <function name="GetTradeSkillItemNameFilter" type="function">
    <summary>Returns the text of the tradeskill item name filter</summary>
    <return name="text" type="string">
      <summary>The text of the tradeskill item name filter</summary>
    </return>
  </function>
  <function name="GetInboxItemLink" type="function">
    <summary>Returns the item link to the specified attachment.</summary>
    <param name="messageIndex" type="number">
      <summary>The index of the message in your mailbox.</summary>
    </param>
    <param name="attachIndex" type="number">
      <summary>The index of the attachement.</summary>
    </param>
    <return name="itemlink" type="string">
      <summary>The Itemlink to the attachement in question.</summary>
    </return>
  </function>
  <function name="SetBindingClick" type="function">
    <summary>Set a key binding directly to a Button object</summary>
    <param name="KEY" type="string">
      <summary>The key combination to bind</summary>
    </param>
    <param name="buttonName" type="string">
      <summary>The Button object to which to bind the key combination to</summary>
    </param>
    <param name="mouseButton" type="string" optional="true">
      <summary>The mousebutton to use as a trigger</summary>
    </param>
  </function>
  <function name="AddChatWindowChannel" type="function">
    <summary>Maps a channel in a specific chat frame to a numeric index.</summary>
    <param name="index" type="number">
      <summary>The index of a chat frame (1-7)</summary>
    </param>
    <param name="channel" type="number">
      <summary>The name of a chat channel</summary>
    </param>
    <return name="zoneChannel" type="number">
      <summary>0 for non-zone channels, otherwise a numeric index specific to that channel</summary>
    </return>
  </function>
  <function name="Sound_GameSystem_GetNumOutputDrivers" type="function">
    <summary>Returns the number of game sound output drivers</summary>
  </function>
  <function name="SetChatWindowColor" type="function">
    <summary>Sets the value of the chat window color in chat-cache.txt</summary>
    <param name="index" type="number">
      <summary>The index of the chat frame</summary>
    </param>
    <param name="r" type="number">
      <summary>The red value of the color (0.0 - 1.0)</summary>
    </param>
    <param name="g" type="number">
      <summary>The green value of the color (0.0 - 1.0)</summary>
    </param>
    <param name="b" type="number">
      <summary>The blue value of the color (0.0 - 1.0)</summary>
    </param>
  </function>
  <function name="ClickPetitionButton" type="function" />
  <function name="GetQuestLogLeaderBoard" type="function">
    <summary>Returns information about tracked quest objectives</summary>
    <param name="objective" type="number">
      <summary>The index of the objective to query</summary>
    </param>
    <param name="questIndex" type="number" optional="true">
      <summary>The index of the quest in the quest log.  If this isn't supplied, it defaults to the currently selected quest log entry.</summary>
    </param>
    <return name="text" type="string">
      <summary>The text of the objective</summary>
    </return>
    <return name="type" type="string">
      <summary>The type of objective</summary>
    </return>
    <return name="finished" type="number" apitype="1nil">
      <summary>1 if the objective is complete, otherwise nil</summary>
    </return>
  </function>
  <function name="GetSelectedDisplayChannel" type="function">
    <summary>Returns the channelID of the selected channel in the "Chat" interface</summary>
    <return name="channelID" type="number">
      <summary>The channelID of the channel selected in the "Chat" tab of the "Social" panel</summary>
    </return>
  </function>
  <function name="CanSendAuctionQuery" type="function">
    <summary>Returns whether or not the player can perform a given auction house query</summary>
    <param name="list" type="string">
      <summary>The type of auction listing</summary>
    </param>
    <return name="canQuery" type="number" apitype="1nil">
      <summary>1 if the player can submit an auction query, otherwise nil</summary>
    </return>
    <return name="canMassQuery" type="number" apitype="1nil">
      <summary>1 if the player can submit a mass auction query, otherwise nil.</summary>
    </return>
  </function>
  <function name="UninviteUnit" type="function">
    <summary>Removes the specified unit from the current group.</summary>
    <param name="unit" type="string">
      <summary>The name of the unit to un-invite.</summary>
    </param>
  </function>
  <function name="ClearChannelWatch" type="function" />
  <function name="GuildSetMOTD" type="function">
    <summary>Sets the guild message of the day.</summary>
    <param name="message" type="string">
      <summary>The message to set as the guld MOTD</summary>
    </param>
  </function>
  <function name="ResetInstances" type="function">
    <summary>Resets all non-saved instances</summary>
  </function>
  <function name="Sound_GameSystem_RestartSoundSystem" type="function">
    <summary>Restarts the game's sound systems</summary>
  </function>
  <function name="exp" type="function">
    <summary>This function is simply an alias for math.exp</summary>
  </function>
  <function name="ClearLFGAutojoin" type="function">
    <summary>Clears the Autojoin functionality in the LFG tool</summary>
  </function>
  <function name="IsShiftKeyDown" type="function">
    <summary>Returns whether or not a Shift key on the keyboard is held down.</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if a Shift key on the keyboard is currently held down</summary>
    </return>
  </function>
  <function name="UnitReaction" type="function">
    <summary>Returns the reaction of one unit with regards to another as a number</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The source unitid</summary>
    </param>
    <param name="otherUnit" type="string" apitype="unitid">
      <summary>The destination unitid</summary>
    </param>
    <return name="reaction" type="number">
      <summary>The reaction of the source unit with regards to the destination unit.  This reaction corresponds directly to faction level.</summary>
    </return>
  </function>
  <function name="CanSignPetition" type="function">
    <summary>Returns whether or not the player can sign the currently offered petition</summary>
    <return name="canSign" type="number" apitype="1nil">
      <summary>1 if the player can sign the currently offered petition, otherwise nil</summary>
    </return>
  </function>
  <function name="GetTrainerSkillLines" type="function">
    <summary>Returns the spell schools available at a given trainer</summary>
    <return name="..." type="string">
      <summary>A list of strings containing the names of the available trainer skill lines.  These are the "schools" that correspond to spellbook tabs, such as "Fire", "Arcane" and "Frost".</summary>
    </return>
  </function>
  <function name="UnitIsDead" type="function">
    <summary>Returns whether or not the given unit is dead</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>A unitId to query</summary>
    </param>
    <return name="isDead" type="number" apitype="1nil">
      <summary>1 if the unit is dead, otherwise nil</summary>
    </return>
  </function>
  <function name="GetExpertisePercent" type="function">
    <summary>Returns the reduced chance to be dodged or parried as a result of the expertise rating</summary>
    <return name="expertisePerc" type="number">
      <summary>The reduced chance to be dodged or parried granted by the current level of expertise rating</summary>
    </return>
  </function>
  <function name="select" type="function" />
  <function name="Sound_GameSystem_GetNumInputDrivers" type="function">
    <summary>Returns the number of game sound input drivers</summary>
    <param name="index" type="number">
      <summary>The desired index</summary>
    </param>
  </function>
  <function name="GetEventCPUUsage" type="function">
    <summary>Returns information about the CPU usage of events</summary>
    <return name="timeSpent" type="number">
      <summary>The total amount of time spent while processing events, in seconds. If CPU profiling is disabled, this value will be 0.</summary>
    </return>
    <return name="numEvents" type="number">
      <summary>The number of events that have been fired this session</summary>
    </return>
  </function>
  <function name="SetChannelOwner" type="function">
    <summary>Gives channel ownership to another player.</summary>
    <param name="channel" type="string">
      <summary>The name of the channel</summary>
    </param>
    <param name="newowner" type="string">
      <summary>The name of the player to give ownership</summary>
    </param>
  </function>
  <function name="GetMinimapZoneText" type="function">
    <summary>Returns the zone text for use on the Minimap.</summary>
    <return name="zoneText" type="string">
      <summary>The name of the area the player is current in.</summary>
    </return>
  </function>
  <function name="ExpandTrainerSkillLine" type="function">
    <summary>Expands a skill line in the trainer window.</summary>
    <param name="index" type="number">
      <summary>The index of the line to expand</summary>
    </param>
  </function>
  <function name="GetTargetTradeMoney" type="function">
    <summary>Returns the amount of money the target has placed in the trade window.</summary>
    <return name="money" type="number">
      <summary>The amount of money the target has placed in the trade window, in copper</summary>
    </return>
  </function>
  <function name="MovieRecording_GetAspectRatio" type="function">
    <summary>Returns the aspect ratio used in any movie recordings</summary>
    <return name="ratio" type="number">
      <summary>The aspect ratio of any resulting movie recordings.  This is calculated by dividing the height of the resulting video by the width.</summary>
    </return>
  </function>
  <function name="ResetView" type="function">
    <summary>Resets the given viewmode and switches to that viewmode.</summary>
    <param name="viewModeIndex" type="number">
      <summary>view mode index to reset to default. (2-5)</summary>
    </param>
  </function>
  <function name="IsSelectedSpell" type="function">
    <summary>Returns whether or not a specific spell is currently selected in the spellbook</summary>
    <param name="id" type="number">
      <summary>The index of a spell in the spellbook</summary>
    </param>
    <param name="bookType" type="string">
      <summary>The spellbook type</summary>
    </param>
    <return name="isSelected" type="number" apitype="1nil">
      <summary>1 if the given spell is currently selected, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumVoiceSessions" type="function">
    <summary>Returns the number of voice sessions the player is in</summary>
    <return name="count" type="number">
      <summary>The number of voice sessions</summary>
    </return>
  </function>
  <function name="CanViewOfficerNote" type="function">
    <summary>Returns whether or not the player can view officer notes</summary>
    <return name="canView" type="number" apitype="1nil">
      <summary>1 if the player can view officer notes, otherwise nil</summary>
    </return>
  </function>
  <function name="tostring" type="function" />
  <function name="GetRefreshRates" type="function">
    <summary>Returns a list of all available refresh rates for the current system.</summary>
    <return name="..." type="number">
      <summary>A list of all available refresh rates.</summary>
    </return>
  </function>
  <function name="GetTalentPrereqs" type="function">
    <summary>Returns the prerequisites for a given talent.</summary>
    <param name="tabIndex" type="number">
      <summary>The index of the chosen tab</summary>
    </param>
    <param name="talentIndex" type="number">
      <summary>The index of the talent to query</summary>
    </param>
    <return name="tier" type="number">
      <summary>The tier of the required talent</summary>
    </return>
    <return name="column" type="number">
      <summary>The column of the required talent</summary>
    </return>
    <return name="isLearnable" type="number" apitype="1nil">
      <summary>1 if the talent is currently learnable, otherwise nil</summary>
    </return>
  </function>
  <function name="MoveViewDownStart" type="function" />
  <function name="DisplayChannelVoiceOff" type="function">
    <summary>Disables voice chat in a given channel</summary>
    <param name="displayIndex" type="number">
      <summary>The index of a channel in the chat display window.  These indices include the headers that are displayed in this window.</summary>
    </param>
  </function>
  <function name="DeclineQuest" type="function">
    <summary>Declines a quest.</summary>
  </function>
  <function name="GetTradeskillRepeatCount" type="function">
    <summary>Returns the number of times the current tradeskill recipe will repeat</summary>
    <return name="repeatCount" type="number">
      <summary>The amount of times the current recipe will be repeated until finished.  The start value of this is set when DoTradeSkill() is called, and is decremented each time a new item is finished.</summary>
    </return>
  </function>
  <function name="MusicPlayer_BackTrack" type="function">
    <summary>Goes back a track in iTunes</summary>
  </function>
  <function name="GetTotemTimeLeft" type="function">
    <summary>Returns the number of seconds left for the given totem (or 0 if no totem)</summary>
    <param name="slot" type="number">
      <summary>The element of the totem you want to query</summary>
    </param>
  </function>
  <function name="UnitCastingInfo" type="function">
    <summary>Returns information about the spell a unit is casting.</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the spell being cast</summary>
    </return>
    <return name="nameSubtext" type="string">
      <summary>The rank of the spell being cast, or other sub-text</summary>
    </return>
    <return name="text" type="string">
      <summary>The text to be displayed</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the spell icon texture</summary>
    </return>
    <return name="startTime" type="number">
      <summary>The time the cast was started, in millisecond precision</summary>
    </return>
    <return name="endTime" type="number">
      <summary>The time the cast will be finished, in millisecond precision</summary>
    </return>
    <return name="isTradeSkill" type="number" apitype="1nil">
      <summary>1 if the spell being cast is a tradeskill, otherwise nil.</summary>
    </return>
  </function>
  <function name="GetCoinText" type="function">
    <summary>Return a localized string describing the amount.</summary>
    <param name="amount" type="number">
      <summary>Amount of money in copper</summary>
    </param>
    <param name="separator" type="string">
      <summary>Character to use as separator (',' is used if nil)</summary>
    </param>
    <return name="coin_text" type="string">
      <summary>Text description of the amount using localized version of 'Gold', 'Silver' and 'Copper'</summary>
    </return>
  </function>
  <function name="CanComplainInboxItem" type="function">
    <summary>Query an inbox mail item for complain status. This determines if you can report this mail as Spam. Returns 1 if you can, nil otherwise.  This function only works at the mailbox, and will return nil for anyone on your friends list</summary>
    <param name="mailID" type="number">
      <summary>The index of the message in the mailbox</summary>
    </param>
    <return name="complain" type="number" apitype="1nil">
      <summary>1 if the inbox item can be complained about, otherwise nil</summary>
    </return>
  </function>
  <function name="SetOverrideBindingSpell" type="function">
    <summary>Set an override binding to a specific spell</summary>
    <param name="owner" type="table">
      <summary>The frame responsible for setting the override</summary>
    </param>
    <param name="isPriority" type="boolean">
      <summary>Indicates that this is a priority override binding</summary>
    </param>
    <param name="key" type="string">
      <summary>The key to bind to the command (e.g. "CTRL-2")</summary>
    </param>
    <param name="spellname" type="string">
      <summary>The spell to cast or nil to remove the override binding</summary>
    </param>
  </function>
  <function name="GuildRosterSetPublicNote" type="function">
    <summary>Sets the public note of a guild member</summary>
    <param name="index" type="number">
      <summary>The position the member is on the guild roster</summary>
    </param>
    <param name="note" type="string">
      <summary>Text to be set as the public note of the index</summary>
    </param>
  </function>
  <function name="MoveViewInStart" type="function" />
  <function name="PutItemInBackpack" type="function">
    <summary>Puts the currently held item into the first open slot in the player's backpack.</summary>
  </function>
  <function name="CloseArenaTeamRoster" type="function">
    <summary>Closes the Arena Team Roster frame</summary>
  </function>
  <function name="TurnLeftStop" type="function" />
  <function name="SetOverrideBinding" type="function">
    <summary>Set an override binding to the given command.</summary>
    <param name="owner" type="table">
      <summary>The frame responsible for setting the override</summary>
    </param>
    <param name="isPriority" type="boolean">
      <summary>Indicates that this is a priority override binding</summary>
    </param>
    <param name="key" type="string">
      <summary>The key to bind to the command (e.g. "CTRL-2")</summary>
    </param>
    <param name="command" type="string">
      <summary>The binding command to execute or nil to remove the override binding.</summary>
    </param>
  </function>
  <function name="GetQuestLogItemLink" type="function">
    <summary>Returns the item link of a specific item in the quest log reward or progress frame.</summary>
    <param name="type" type="string">
      <summary>The type of item on the questlog frame.</summary>
    </param>
  </function>
  <function name="NotWhileDeadError" type="function">
    <summary>Fires a "UI_ERROR_MESSAGE" event, with the argument ERR_PLAYER_DEAD</summary>
  </function>
  <function name="GetPVPLifetimeStats" type="function">
    <summary>Returns lifetime honorable kills, and the highest PvP rank the player has attained.</summary>
    <return name="hk" type="number">
      <summary>The number of honorable kills the player has achieved</summary>
    </return>
    <return name="highestRank" type="number">
      <summary>The highest PvP rank the player has achieved</summary>
    </return>
  </function>
  <function name="CameraZoomOut" type="function">
    <summary>Zooms the camera out.</summary>
    <param name="distance" type="number">
      <summary>The distance to zoom out</summary>
    </param>
  </function>
  <function name="ResetChatColors" type="function">
    <summary>Resets the colors of the chat channels back to default.</summary>
  </function>
  <function name="ChannelUnSilenceAll" type="function">
    <summary>Unsilences a player for chat and voice on a given channel</summary>
    <paramchoice>
      <param name="channelName" type="string">
        <summary>The name of the channel</summary>
      </param>
      <param name="channelIndex" type="number">
        <summary>The index of the channel</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetSelectedFriend" type="function">
    <summary>Returns the friend index of the friend you have selected</summary>
    <return name="index" type="number">
      <summary>The index of your selected friend, or 0 if no friend is selected</summary>
    </return>
  </function>
  <function name="IsLinuxClient" type="function">
    <summary>Returns whether or not the game client is running on Linux</summary>
    <return name="IsLinux" type="number" apitype="1nil">
      <summary>1 if the client is a Linux client, otherwise nil</summary>
    </return>
  </function>
  <function name="ReportSuggestion" type="function" />
  <function name="GuildControlAddRank" type="function">
    <summary>Adds a new rank to the player's guild.</summary>
    <param name="name" type="string">
      <summary>The name of the new rank</summary>
    </param>
  </function>
  <function name="loadstring" type="function" />
  <function name="ArenaTeamInviteByName" type="function">
    <summary>Invites a player to one of the player's arena teams</summary>
    <param name="team" type="number">
      <summary>The index of the arena team</summary>
    </param>
    <param name="name" type="string">
      <summary>The name of the player to invite</summary>
    </param>
  </function>
  <function name="CommentatorGetCamera" type="function" />
  <function name="SetSelectedFriend" type="function">
    <summary>Sets the selection in the Friends list</summary>
    <param name="index" type="number">
      <summary>The index of a friend in the friend's listing</summary>
    </param>
  </function>
  <function name="DeclineLevelGrant" type="function">
    <summary>Declines a level that has been granted to you</summary>
  </function>
  <function name="GetRewardText" type="function">
    <summary>Returns the reward text of the quest at the quest completion frame</summary>
    <return name="text" type="string">
      <summary>The reward text of the quest that is waiting to be completed, or the empty string</summary>
    </return>
  </function>
  <function name="IsIgnored" type="function">
    <summary>Returns whether or not you are ignoring a specific unit.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="isIgnored" type="number" apitype="1nil">
      <summary>1 if the given player is being ignored, otherwise nil</summary>
    </return>
  </function>
  <function name="GetTradeSkillNumMade" type="function">
    <summary>Returns the number of items possibly created when crafting a tradeskill recipe</summary>
    <param name="index" type="number">
      <summary>The index of a tradeskill recipe in the trade skill window</summary>
    </param>
    <return name="minMade" type="number">
      <summary>The minimum number of items created when crafting</summary>
    </return>
    <return name="maxMade" type="number">
      <summary>The maximum number of items created when crafting</summary>
    </return>
  </function>
  <function name="UnitRangedAttack" type="function">
    <summary>Returns a unit's ranged weapon skill</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query.</summary>
    </param>
    <return name="rangedAttackBase" type="number">
      <summary>The base ranged weapon skill</summary>
    </return>
    <return name="rangedAttackMod" type="number">
      <summary>Any modifiers to the base ranged weapon skill</summary>
    </return>
  </function>
  <function name="GetGossipAvailableQuests" type="function">
    <summary>Gets a list of all available quests of the active gossip frame.</summary>
    <return name="title" type="string">
      <summary>The name of the quest.</summary>
    </return>
    <return name="level" type="number">
      <summary>The level of the quest.</summary>
    </return>
    <return name="isTrivial" type="number" apitype="1nil">
      <summary>1 if the quest is trivial (low level), nil otherwise.</summary>
    </return>
    <return name="...">
      <summary>A repeating list of all quests on the current gossip frame containing title, level, isTrivial.</summary>
    </return>
  </function>
  <function name="GetRunningMacro" type="function">
    <summary>Returns the index of the currently running macro.</summary>
    <return name="macroIdx" type="number">
      <summary>The index of the curently running macro, or nil</summary>
    </return>
  </function>
  <function name="BuyTrainerService" type="function">
    <summary>Purchases a service available at a trainer</summary>
    <param name="index" type="number">
      <summary>The index of a service available at a trainer</summary>
    </param>
  </function>
  <function name="HasInspectHonorData" type="function">
    <summary>Returns whether or not the client has honor data for the currently inspected player</summary>
    <return name="hasHonorData" type="number" apitype="1nil">
      <summary>1 if the client has honor data for the currently inspected player, otherwise nil</summary>
    </return>
  </function>
  <function name="GetItemIcon" type="function">
    <summary>Returns the texture path for the given item's icon</summary>
    <paramchoice>
      <param name="itemID" type="number">
        <summary>The item's ID</summary>
      </param>
      <param name="&quot;itemName&quot;" type="string">
        <summary>The item's name</summary>
      </param>
      <param name="&quot;itemLink&quot;" type="string">
        <summary>The item's link</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetSelectedStablePet" type="function">
    <summary>Returns the index of the currently selected stable pet</summary>
    <return name="selectedPet" type="number">
      <summary>The index of the currently selected stable pet</summary>
    </return>
  </function>
  <function name="GetBattlefieldInstanceRunTime" type="function">
    <summary>Returns how long the current battleground instance has been running in milliseconds</summary>
    <return name="time" type="number">
      <summary>The number of milliseconds since the currently battleground instance started.  This number can be converted to seconds by dividing by 1000, or converted to a text string by using SecondsToTime(GetBattlefieldInstanceRunTime()/1000).</summary>
    </return>
  </function>
  <function name="IsPartyLeader" type="function">
    <summary>Returns whether or not a unit is the current party leader</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="isLeader" type="number" apitype="1nil">
      <summary>1 if the unit is the party leader, otherwise nil</summary>
    </return>
  </function>
  <function name="ipairs" type="function" />
  <function name="GetRaidTargetIndex" type="function">
    <summary>Returns the raid target on the given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="raidTargetIndex" type="number">
      <summary>The index of the current raid target</summary>
    </return>
  </function>
  <function name="GetCurrentKeyBoardFocus" type="function">
    <summary>Returns the frame that currently has the keyboard focus</summary>
    <return name="frame" type="table">
      <summary>The frame that current has the keyboard focus or nil.  This is typically an EditBox frame, but could be any frame.</summary>
    </return>
  </function>
  <function name="GetNumStableSlots" type="function">
    <summary>Returns the number of stable slots the player has purchased.</summary>
    <return name="numSlots" type="number">
      <summary>The number of stable slots the player currently owns.</summary>
    </return>
  </function>
  <function name="GetNumTalents" type="function">
    <summary>Returns the number of talent spell options in a given tab.</summary>
    <param name="tabIndex" type="number">
      <summary>The index of the talent tab to query</summary>
    </param>
    <return name="numTalents" type="number">
      <summary>The number of talent spells in the given tab.  This function is used internally by the default interface to draw the talent trees.</summary>
    </return>
  </function>
  <function name="GetQuestLogSelection" type="function">
    <summary>Returns the index of the currently selected quest in the quest log.</summary>
    <return name="questID" type="number">
      <summary>The index of the quest that is currently selected</summary>
    </return>
  </function>
  <function name="UnitIsPVPSanctuary" type="function">
    <summary>Returns 1 if the unit in question is in a PVP sanctuary, nil otherwise.</summary>
    <param name="unit" type="string">
      <summary>The name of the unit to query.</summary>
    </param>
    <return name="state" type="number" apitype="1nil">
      <summary>1 if the unit is in a PVP Sanctuary, nil otherwise.</summary>
    </return>
  </function>
  <function name="CanEditOfficerNote" type="function">
    <summary>Returns whether or not the player can edit officer notes</summary>
    <return name="canEdit" type="number" apitype="1nil">
      <summary>1 if the player can edit officer notes, otherwise nil</summary>
    </return>
  </function>
  <function name="GetTrainerServiceStepIncrease" type="function">
    <param name="index" type="number">
      <summary>The index of the trainer service</summary>
    </param>
    <return name="increaseText" type="string">
      <summary>A string indicating how much skill increase will be gained by learning the skill.</summary>
    </return>
  </function>
  <function name="GetAuctionSort" type="function">
    <summary>Returns </summary>
    <param name="type" type="string">
      <summary>The type of auction listing</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of an auction sort entry</summary>
    </param>
    <return name="existingSortColumn" type="string">
      <summary>The column to sort by</summary>
    </return>
    <return name="existingSortReverse" type="number" apitype="1nil">
      <summary>1 if the sort on the existing column is reversed, otherwise nil</summary>
    </return>
  </function>
  <function name="GMSurveyCommentSubmit" type="function">
    <summary>Submits a comment to the current GM survey</summary>
    <param name="comment" type="string">
      <summary>The comment made on the GM Survey</summary>
    </param>
  </function>
  <function name="CheckInbox" type="function">
    <summary>Requests the player's mailbox information from the server</summary>
  </function>
  <function name="IsArenaTeamCaptain" type="function">
    <summary>Returns whether or not the player is the team captain for a given arena team</summary>
    <param name="index" type="number">
      <summary>The index of an arena team</summary>
    </param>
    <return name="isCaptain" type="number" apitype="1nil">
      <summary>1 if the player is the captain of the given arena team or an invalid index is supplied, otherwise nil.</summary>
    </return>
  </function>
  <function name="GetInventoryItemsForSlot" type="function">
    <summary>Returns a list of items that can be equipped in a given inventory slot.</summary>
    <param name="slotId" type="number">
      <summary>An inventory slot id, as obtained from GetInventorySlotInfo()</summary>
    </param>
    <return name="availableItems" type="table">
      <summary>A table keyed by item location masks, with the item number as the value.</summary>
    </return>
  </function>
  <function name="DelIgnore" type="function">
    <summary>Removes a player from your ignore list</summary>
    <param name="name" type="string">
      <summary>The name of the player you wish to remove from your ignore list</summary>
    </param>
  </function>
  <function name="GuildLeave" type="function">
    <summary>Causes the player to leave their current guild without confirmation</summary>
  </function>
  <function name="GetChatTypeIndex" type="function">
    <summary>Converts a chat type string to a numeric chat type index.</summary>
    <param name="type" type="string">
      <summary>A string indicating the chat type to be converted.  This is the key in the table ChatTypeInfo.</summary>
    </param>
    <return name="index" type="number">
      <summary>The type index of the given chat type</summary>
    </return>
  </function>
  <function name="ExpandSkillHeader" type="function">
    <summary>Expands a skill header in the Skills window</summary>
    <param name="index" type="number">
      <summary>The index of the skill header to expand.</summary>
    </param>
  </function>
  <function name="PromoteToLeader" type="function">
    <summary>Promotes a player to party/raid leader</summary>
    <param name="name" type="string">
      <summary>The name of the player to promote</summary>
    </param>
  </function>
  <function name="MovieRecording_GetProgress" type="function">
    <summary>Returns information about the movie that is currently being compressed.</summary>
    <return name="recovering" type="boolean">
      <summary>If a previous compression was interrupted (such as WoW being forcefully closed or crashing) this value will be true, indicating that recovery is being attempted on the file.</summary>
    </return>
    <return name="progress" type="number">
      <summary>The progress of the compression process, as a number between 0 and 1.  This number can be converted to a percentage using math.floor(progress * 100).</summary>
    </return>
  </function>
  <function name="UnitIsUnit" type="function">
    <summary>Returns whether or not two unitIds refer to the same actual character.</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The first unitId to compare</summary>
    </param>
    <param name="otherUnit" type="string" apitype="unitid">
      <summary>The second unitId to compare</summary>
    </param>
    <return name="isSame" type="number" apitype="1nil">
      <summary>Returns 1 if the units refer to the same character, otherwise nil</summary>
    </return>
  </function>
  <function name="CursorHasSpell" type="function">
    <summary>Returns whether or not the cursor currently holds a spell.</summary>
    <return name="hasSpell" type="number" apitype="1nil">
      <summary>Indicates if there is currently a spell attached to the cursor.</summary>
    </return>
  </function>
  <function name="GetGMTicketCategories" type="function">
    <summary>Returns a list of available GM ticket categories</summary>
    <return name="..." type="string">
      <summary>A variable number of categories</summary>
    </return>
  </function>
  <function name="UseSoulstone" type="function">
    <summary>This function causes you to use a Warlock's Soulstone or a Shaman's Resurrection spell when you die</summary>
  </function>
  <function name="CombatLogGetNumEntries" type="function">
    <summary>Returns the number of available combat log events</summary>
    <param name="ignoreFilter" type="boolean">
      <summary>Uses the entire unfiltered combat log history if true</summary>
    </param>
  </function>
  <function name="MoveBackwardStop" type="function" />
  <function name="GetMouseFocus" type="function">
    <summary>Returns the frame that is currently under the mouse, and has mouse input enabled.</summary>
    <return name="frame" type="table">
      <summary>The frame that currently has the mouse focus</summary>
    </return>
  </function>
  <function name="PetRename" type="function">
    <summary>Renames the currently controlled pet</summary>
    <param name="name" type="string">
      <summary>The name to give the pet</summary>
    </param>
  </function>
  <function name="GetFrameCPUUsage" type="function">
    <summary>Gets CPU time used and number of function calls for the frame and it's children depending on the includeChildren setting. includeChildren defaults to 'true'.</summary>
    <param name="frame" type="table">
      <summary>Frame to query.</summary>
    </param>
    <param name="includeChildren" type="boolean">
      <summary>Include children of this frame in query.</summary>
    </param>
    <return name="time" type="number">
      <summary>CPU time in milliseconds used.</summary>
    </return>
    <return name="calls" type="number">
      <summary>Number of function calls.</summary>
    </return>
  </function>
  <function name="GetFramesRegisteredForEvent" type="function">
    <summary>Returns all frames registered for a given event</summary>
    <param name="event" type="string">
      <summary>An event name</summary>
    </param>
    <return name="..." type="table">
      <summary>A list of all frames registered for the given event</summary>
    </return>
  </function>
  <function name="GetBattlefieldTeamInfo" type="function">
    <summary>Returns info about teams and their ratings in a rated arena match.</summary>
    <param name="index" type="number">
      <summary>Team Index</summary>
    </param>
    <return name="teamName" type="string">
      <summary>Team Name</summary>
    </return>
    <return name="teamRating" type="number">
      <summary>Rating the team started this match with.</summary>
    </return>
    <return name="newTeamRating" type="number">
      <summary>Rating for the team after this match.</summary>
    </return>
  </function>
  <function name="GetMacroItem" type="function">
    <summary>Returns information about a macro, if it's next action would be to use an item</summary>
    <paramchoice>
      <param name="macroIndex" type="number">
        <summary>The index of a macro to query</summary>
      </param>
      <param name="macroName" type="string">
        <summary>The name of a macro to query</summary>
      </param>
    </paramchoice>
    <return name="name" type="string">
      <summary>The name of the item that will be used by the given macro</summary>
    </return>
    <return name="link" type="string">
      <summary>An item link for the given item</summary>
    </return>
  </function>
  <function name="CreateWorldMapArrowFrame" type="function" />
  <function name="RemoveQuestWatch" type="function">
    <summary>Stops tracking objectives for a quest in the quest log</summary>
    <param name="questIndex" type="number">
      <summary>The index of a quest in the quest log</summary>
    </param>
  </function>
  <function name="GetTrainerServiceCost" type="function">
    <summary>Returns the cost of a given trainer service</summary>
    <param name="index" type="number">
      <summary>The index of a trainer service</summary>
    </param>
    <return name="moneyCost" type="number">
      <summary>The cost of the service, in copper</summary>
    </return>
    <return name="talentCost" type="number">
      <summary>The cost of the service, in talent points</summary>
    </return>
    <return name="skillCost" type="number">
      <summary>The cost of the service, of the available profession limit</summary>
    </return>
  </function>
  <function name="QueryGuildBankLog" type="function">
    <summary>Queries the server for a guild bank log for a specific tab</summary>
    <param name="tab" type="number">
      <summary>The index of a guild tab</summary>
    </param>
  </function>
  <function name="GetNumChannelMembers" type="function">
    <summary>Returns the number of members in a specific chat channel.</summary>
    <param name="id" type="number">
      <summary>Chat Channel ID</summary>
    </param>
    <return name="numMembers" type="number">
      <summary>Number of players in the queried chat channel.</summary>
    </return>
  </function>
  <function name="SetMacroItem" type="function">
    <summary>Sets a macro to use a specific item and target for visual updates</summary>
    <paramchoice>
      <param name="macroIndex" type="number">
        <summary>The index of a macro</summary>
      </param>
      <param name="macroName" type="string">
        <summary>The name of a macro</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetResSicknessDuration" type="function">
    <summary>Returns the duration of resurrection sickness at the player's current level</summary>
    <return name="resSicknessTime" type="string">
      <summary>The duration of resurrection sickness at the player's current level.  This function returns nil for players under level 10, since they cannot get resurrection sickness.</summary>
    </return>
  </function>
  <function name="GetCurrentBindingSet" type="function">
    <summary>Returns the type of key bindings in use</summary>
    <return name="bindingSet" type="number">
      <summary>The binding set currently in use</summary>
    </return>
  </function>
  <function name="GetExpertise" type="function">
    <summary>Returns the amount of expertise the player currently has</summary>
    <return name="expertise" type="number">
      <summary>The amount of expertise rating the player currently has</summary>
    </return>
  </function>
  <function name="GuildRoster" type="function">
    <summary>Initiates a guild roster update</summary>
  </function>
  <function name="GetQuestItemInfo" type="function">
    <summary>Returns basic information about the quest items for the quest currently shown in the gossip window.</summary>
    <param name="itemType" type="string">
      <summary>Type of quest item to filter on.</summary>
    </param>
    <param name="itemNum" type="number">
      <summary>The item number to get info on</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the quest item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the quest item's texture</summary>
    </return>
    <return name="numItems" type="number">
      <summary>How many of the quest item</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality of the quest item</summary>
    </return>
    <return name="isUsable" type="boolean">
      <summary>If the quest item is usable by the current player</summary>
    </return>
  </function>
  <function name="GetSocketItemInfo" type="function">
    <summary>Returns information about the item currently open in the socket UI.</summary>
    <return name="name" type="string">
      <summary>The name of the item.</summary>
    </return>
    <return name="icon" type="string">
      <summary>The icon of the item.</summary>
    </return>
    <return name="quality" type="number">
      <summary>The item's quality</summary>
    </return>
  </function>
  <function name="VoiceChat_IsRecordingLoopbackSound" type="function">
    <summary>Returns whether the player is recording a voice sample</summary>
    <return name="isRecording" type="number">
      <summary>1 if the player is recording a voice sample, otherwise 0</summary>
    </return>
  </function>
  <function name="ChannelSilenceAll" type="function">
    <summary>Removes both voice and chat permissions for the given player in the specified channel</summary>
    <param />
    <param name="name" type="string">
      <summary>The exact name of the player to silence</summary>
    </param>
  </function>
  <function name="GetComboPoints" type="function">
    <summary>Returns the number of combo points the player has</summary>
    <return name="comboPoints" type="number">
      <summary>The number of combo points</summary>
    </return>
  </function>
  <function name="TakeInboxTextItem" type="function">
    <summary>Sends a request to the server to retrieve the given message's text item</summary>
    <param name="index" type="number">
      <summary>The message index of the text item to retrieve</summary>
    </param>
  </function>
  <function name="SetBindingMacro" type="function">
    <summary>Assign a keybinding to a specific macro</summary>
    <paramchoice>
      <param name="macroName" type="string">
        <summary>The name of the macro. If Macros are named the same, it will return the first.</summary>
      </param>
      <param name="macroID" type="number">
        <summary>The MacroID of the macro required. 1-18 are the account wide ones, and 19-32 are character specific</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetBattlefieldMapIconScale" type="function">
    <summary>Returns the scale of the battleground map icons</summary>
    <return name="scale" type="number">
      <summary>The scale of the map icons from 0 to 1</summary>
    </return>
  </function>
  <function name="GetBattlefieldStatData" type="function">
    <summary>Returns battleground-specific statistics for a given player</summary>
    <param name="playerIndex" type="number">
      <summary>The index of the player whose stat you want to retrieve</summary>
    </param>
    <param name="statIndex" type="number">
      <summary>The column index of the stat you want to retrieve</summary>
    </param>
    <return name="columnData" type="number">
      <summary>The requested data. nil if either the playerIndex or statIndex are invalid.</summary>
    </return>
  </function>
  <function name="GetActionInfo" type="function">
    <summary>Returns information about a given actionbar slot</summary>
    <param name="slot" type="number">
      <summary>An action slot</summary>
    </param>
    <return name="type" type="string">
      <summary>The type of action bound to the slot</summary>
    </return>
    <return name="id" type="number">
      <summary>The identifier for the spell/macro/item</summary>
    </return>
    <return name="subType" type="string">
      <summary>The subtype of the action, otherwise nil</summary>
    </return>
  </function>
  <function name="GetAddOnMetadata" type="function">
    <summary>Returns the value of certain fields in an addon's TOC file</summary>
    <paramchoice>
      <param name="index" type="number">
        <summary>The index of the AddOn, must be in the range of 1 to GetNumAddOns().</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the AddOn as it appears in its folder name.</summary>
      </param>
    </paramchoice>
    <return name="data" type="string">
      <summary>The data available in the TOC for the variable queried, or nil if the variable is not queryable or not defined.</summary>
    </return>
  </function>
  <function name="MakeMinigameMove" type="function" />
  <function name="CanGrantLevel" type="function" />
  <function name="GetContainerItemDurability" type="function">
    <summary>Returns durability information for an item in one of your bags</summary>
    <param name="index" type="number">
      <summary>The index of the container</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot within the given container to query</summary>
    </param>
    <return name="minDurability" type="number">
      <summary>The minimum durability of the given item</summary>
    </return>
    <return name="curDurability" type="number">
      <summary>The current durability of the given item</summary>
    </return>
  </function>
  <function name="ResetTutorials" type="function">
    <summary>Resets tutorials from the beginning</summary>
  </function>
  <function name="CalculateAuctionDeposit" type="function">
    <summary>Returns the cost of an auction house deposit for a given runtime</summary>
    <param name="runTime" type="number">
      <summary>The runtime of the proposed auction</summary>
    </param>
    <return name="deposit" type="number">
      <summary>The cost of the deposit, in copper</summary>
    </return>
  </function>
  <function name="GetDamageBonusStat" type="function">
    <summary>This function will return the index of the stat that provides the most (not necessarily the only) bonus melee damage when increased for the player's class. Currently this is either 1 (Strength) or 2 (Agility).</summary>
    <return name="bonusStat" type="number">
      <summary>The index of the main stat that grants a damage bonus when increased</summary>
    </return>
  </function>
  <function name="DeleteFile" type="function">
    <summary>This is an internal function, calling it gives an "Access Denied" error message.</summary>
  </function>
  <function name="GetInstanceDifficulty" type="function">
    <summary>Returns your group's dungeon difficulty setting</summary>
    <return name="difficulty" type="number">
      <summary>The group's dungeon difficulty setting (1 to 3)</summary>
    </return>
  </function>
  <function name="ChannelKick" type="function">
    <summary>Kicks a player from the given channel</summary>
    <param name="channel" type="string">
      <summary>The name of the channel</summary>
    </param>
    <param name="name" type="string">
      <summary>The name of the player to kick</summary>
    </param>
  </function>
  <function name="GetAvailableLevel" type="function" />
  <function name="GuildControlGetRankFlags" type="function">
    <summary>Returns a list of permission flags for a guild rank</summary>
    <return name="..." type="number" apitype="1nil">
      <summary>The list of permission flags</summary>
    </return>
  </function>
  <function name="GetQuestMoneyToGet" type="function">
    <summary>Returns the amount of money required for the currently displayed quest in the gossip frame</summary>
    <return name="money" type="number">
      <summary>The amount of money required for the currently displayed quest in the gossip frame</summary>
    </return>
  </function>
  <function name="GetSpellBonusDamage" type="function">
    <summary>Returns the spell damage bonus for a given school</summary>
    <param name="school" type="number">
      <summary>The spell school to query</summary>
    </param>
    <return name="minModifier" type="number">
      <summary>The spell damage bonus for a given school</summary>
    </return>
  </function>
  <function name="AddFriend" type="function">
    <summary>Adds a player or unit to the friend's list</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>The full name of a player to add to the friends list</summary>
      </param>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid of the player to add to the friends list</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetTradeSkillLine" type="function">
    <summary>Returns level information about the active tradeskill line</summary>
    <return name="tradeskillName" type="string">
      <summary>Name of the current tradeskill</summary>
    </return>
    <return name="currentLevel" type="number">
      <summary>Current level in tradeskill</summary>
    </return>
    <return name="maxLevel" type="number">
      <summary>Current maximum level for tradeskill</summary>
    </return>
  </function>
  <function name="KBSetup_BeginLoading" type="function">
    <summary>Loads a maximum number of "Top Issues" from a given page</summary>
    <param name="numArticles" type="number">
      <summary>The number of articles displayed per page.  This is typically the constant KBASE_NUM_ARTICLES_PER_PAGE</summary>
    </param>
    <param name="currentPage" type="number">
      <summary>The page to display</summary>
    </param>
  </function>
  <function name="CloseTrade" type="function">
    <summary>Closes the trade window</summary>
  </function>
  <function name="KBSetup_GetLanguageData" type="function">
    <summary>Returns information about a given knowledge base language</summary>
    <param name="index" type="number">
      <summary>The index of the language to query</summary>
    </param>
    <return name="languageId" type="number" />
    <return name="name" type="string">
      <summary>The name of the language</summary>
    </return>
  </function>
  <function name="CombatLogAddFilter" type="function">
    <summary>Adds a filter to the combat log system</summary>
  </function>
  <function name="CanShowResetInstances" type="function">
    <summary>Returns whether or not the player can reset instances</summary>
    <return name="canResetInstances" type="number" apitype="1nil">
      <summary>1 if the player can currently reset instances, otherwise nil</summary>
    </return>
  </function>
  <function name="GetLFGPartyResults" type="function">
    <summary>Returns information about a member of a party in the LFG results</summary>
    <param name="type" type="number">
      <summary>The type of LFG query.  Valid values can be obtained using GetLFGTypes().</summary>
    </param>
    <param name="lfgNdx" type="number">
      <summary>The dungeon/quest index of the query.  Valid values can be obtained using GetLFGTypeEntries().</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the result in the LFG window</summary>
    </param>
    <param name="partyIndex" type="number">
      <summary>The index of the member of the party.  This does not include the party leader</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player</summary>
    </return>
    <return name="level" type="string">
      <summary>The level of the player, as a string</summary>
    </return>
    <return name="class" type="string">
      <summary>The localized class of the player</summary>
    </return>
  </function>
  <function name="CloseGossip" type="function">
    <summary>Closes the gossip window</summary>
  </function>
  <function name="GetNumTradeSkills" type="function">
    <summary>Returns the number of available trade skill items and headers</summary>
    <return name="numSkills" type="number">
      <summary>The number of trade skills including headers</summary>
    </return>
  </function>
  <function name="GetAuctionItemClasses" type="function">
    <summary>Returns a list of top level item classes used to categorize auction items (e.g. Weapons, Armor, Container, Consumable, Trade Goods, etc.).</summary>
    <return name="..." type="string">
      <summary>List of possible auction item classes</summary>
    </return>
  </function>
  <function name="GetNumRoutes" type="function">
    <summary>Returns then number of routes available from a given taxi node.</summary>
    <param name="index" type="number">
      <summary>Taxi Node index</summary>
    </param>
    <return name="numRoutes" type="number">
      <summary>Number of routes from this node.</summary>
    </return>
  </function>
  <function name="AddChatWindowMessages" type="function">
    <summary>Sets a chat frame to receive and show messages of the given message group.</summary>
    <param name="index" type="number">
      <summary>ChatFrame index (1-7)</summary>
    </param>
    <param name="messageGroup" type="string">
      <summary>Message group to add to the chatframe</summary>
    </param>
  </function>
  <function name="GetMirrorTimerProgress" type="function">
    <summary>Returns the progress of a mirror timer (breath, exhaustion, etc.)</summary>
    <param name="timer" type="string">
      <summary>The type of timer to check</summary>
    </param>
    <return name="progress" type="number">
      <summary>The progress of the timer in milliseconds</summary>
    </return>
  </function>
  <function name="GetGuildBankWithdrawMoney" type="function">
    <summary>Returns the amount of gold the player can withdraw from the bank daily</summary>
    <return name="withdrawLimit" type="number">
      <summary>The amount of gold the player is allowed to withdraw from the bank daily, or -1 if no limit.</summary>
    </return>
  </function>
  <function name="rawget" type="function" />
  <function name="AcceptDuel" type="function">
    <summary>Accepts a proposed duel</summary>
  </function>
  <function name="DisplayChannelVoiceOn" type="function">
    <summary>Enables voice chat in a given channel</summary>
    <param name="displayIndex" type="number">
      <summary>The index of a channel in the chat display window.  These indices include the headers that are displayed in this window.</summary>
    </param>
  </function>
  <function name="SendAddonMessage" type="function">
    <summary>Sends a chat-like message to players that will not show up in their chat windows by default</summary>
    <param name="prefix" type="string">
      <summary>An arbitrary label for the message</summary>
    </param>
    <param name="message" type="string">
      <summary>The message to send</summary>
    </param>
    <param name="type" type="string" optional="true">
      <summary>The type of message to send (guild, party, whisper, etc.)</summary>
    </param>
    <param name="target" type="string" optional="true">
      <summary>The target of a whisper addon message</summary>
    </param>
  </function>
  <function name="SetInventoryPortraitTexture" type="function">
    <summary>Sets a portrait texture using an inventory item</summary>
    <param name="texture" type="table">
      <summary>The texture to be changed</summary>
    </param>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit whose inventory should be queried</summary>
    </param>
    <param name="slot" type="number">
      <summary>The inventory slotId to query</summary>
    </param>
  </function>
  <function name="HideRepairCursor" type="function">
    <summary>Stops displaying the item repair cursor</summary>
  </function>
  <function name="MoveForwardStart" type="function" />
  <function name="IsAutoRepeatAction" type="function">
    <summary>Checks if an action is an auto-repeat action (e.g. Auto Shot).</summary>
    <param name="action" type="number">
      <summary>The action id to check.</summary>
    </param>
    <return name="repeat" type="number" apitype="1nil">
      <summary>1 if the action is an auto-repeat action, nil otherwise</summary>
    </return>
  </function>
  <function name="GetGameTime" type="function">
    <summary>Returns the current in-game time</summary>
    <return name="hour" type="number">
      <summary>The hour portion of the current in-game time</summary>
    </return>
    <return name="minute" type="number">
      <summary>The minute portion of the current in-game time</summary>
    </return>
  </function>
  <function name="DeclineGuild" type="function">
    <summary>Declines an offered guild invitation</summary>
  </function>
  <function name="VoiceChat_ActivatePrimaryCaptureCallback" type="function" />
  <function name="GetScriptCPUUsage" type="function">
    <summary>Returns the total time used by the scripting subsystem</summary>
  </function>
  <function name="GetTabardCreationCost" type="function">
    <summary>Returns the cost to create a guild tabard</summary>
    <return name="cost" type="number">
      <summary>The cost of creating a guild tabard, in copper</summary>
    </return>
  </function>
  <function name="SplitContainerItem" type="function">
    <summary>Splits an item in a given container, placing the new stack on the cursor.</summary>
    <param name="index" type="number">
      <summary>The index of container that holds the item to be split</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot that contains the item to be split</summary>
    </param>
    <param name="amount" type="number">
      <summary>The number of items to split from the main stack</summary>
    </param>
  </function>
  <function name="IsFalling" type="function">
    <summary>Returns whether or not the player is falling</summary>
    <return name="falling" type="number" apitype="1nil">
      <summary>1 if the player is falling, otherwise nil</summary>
    </return>
  </function>
  <function name="GetBattlefieldFlagPosition" type="function">
    <summary>Returns positioning information on the given flag</summary>
    <param name="index" type="number">
      <summary>Index of the flag between 1 and GetNumBattlefieldFlagPositions()</summary>
    </param>
    <return name="flagX" type="number">
      <summary>X location of the flag between 0 and 1</summary>
    </return>
    <return name="flagY" type="number">
      <summary>Y location of the flag between 0 and 1</summary>
    </return>
    <return name="flagToken" type="string">
      <summary>Type of flag</summary>
    </return>
  </function>
  <function name="ToggleMouseMove" type="function">
    <summary>Toggles mouse movement</summary>
  </function>
  <function name="GetQuestLogGroupNum" type="function">
    <summary>Returns the suggested group size to complete the currently selected quest</summary>
    <return name="suggestedGroup" type="number">
      <summary>The suggested group size to complete the quest selected in the quest log, or 0</summary>
    </return>
  </function>
  <function name="GetGuildBankTabPermissions" type="function">
    <summary>Returns the permissions the currently selected guild rank has for a given guild bank tab</summary>
    <param name="tab" type="number">
      <summary>The guild bank tab to query</summary>
    </param>
    <return name="viewTab" type="number" apitype="1nil">
      <summary>1 if the currently selected guild rank has permission to view the tab</summary>
    </return>
    <return name="canDeposit" type="number" apitype="1nil">
      <summary>1 if the currently selected guild rank has permission to deposit items, otherwise nil</summary>
    </return>
    <return name="numWithdrawals" type="number">
      <summary>The number of withdrawals the currently selected guild rank is allowed for the given tab</summary>
    </return>
  </function>
  <function name="GetRaidRosterSelection" type="function">
    <summary>Returns the index of the raid member currently selected by the mouse</summary>
    <return name="raidIndex" type="number">
      <summary>The index of the raid member currently being dragged by the mouse.  If a member was currently selected and moved, this function will continue to return that value until a new raid member has been selected</summary>
    </return>
  </function>
  <function name="PickupPlayerMoney" type="function">
    <summary>Picks up money from the player's inventory and holds it on the cursor</summary>
    <param name="amount" type="number">
      <summary>The amount of money to pick up, in copper</summary>
    </param>
  </function>
  <function name="GetNumMutes" type="function">
    <summary>Returns the number of characters on the player's mute list</summary>
    <return name="numMuted" type="number">
      <summary>The number of characters on the player's mute list</summary>
    </return>
  </function>
  <function name="PickupGuildBankMoney" type="function">
    <summary>Withdraws money from the guild bank, placing it on the cursor</summary>
    <param name="amount" type="number">
      <summary>The amount of money to pick up, in copper</summary>
    </param>
  </function>
  <function name="GetTrainerServiceAbilityReq" type="function">
    <summary>Retrieves information about abilities that are required to train a specific skill.</summary>
    <param name="index" type="number">
      <summary>The index of the trainer service to query.  These indices are affected by the trainer filter, see GetTrainerServiceTypeFilter() and SetTrainerServiceTypeFilter().</summary>
    </param>
    <return name="ability" type="string">
      <summary>The name of the ability that is required.</summary>
    </return>
    <return name="hasReq" type="number" apitype="1nil">
      <summary>1 if the player meets the requirement, nil otherwise</summary>
    </return>
  </function>
  <function name="GetArenaTeamRosterInfo" type="function">
    <summary>Returns information about an arena team member</summary>
    <param name="team" type="number">
      <summary>The index of the team to query.  Teams are indexed in increasing size from 1 to 3, depending on which teams the player is a member of</summary>
    </param>
    <param name="index" type="number">
      <summary>The team roster index to query</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player</summary>
    </return>
    <return name="rank" type="number">
      <summary>The rank of the player</summary>
    </return>
    <return name="level" type="number">
      <summary>The level of the player</summary>
    </return>
    <return name="class" type="string">
      <summary>The localized name of the player's class</summary>
    </return>
    <return name="online" type="number" apitype="1nil">
      <summary>1 if the player is online, otherwise nil</summary>
    </return>
    <return name="played" type="number">
      <summary>The number of games the player has played this week</summary>
    </return>
    <return name="win" type="number">
      <summary>The number of games the player has won this week</summary>
    </return>
    <return name="seasonPlayed" type="number">
      <summary>The number of games the player has played this season</summary>
    </return>
    <return name="seasonWin" type="number">
      <summary>The number of games the player has won this season</summary>
    </return>
    <return name="rating" type="number">
      <summary>The player's personal rating with this team</summary>
    </return>
  </function>
  <function name="GetExtendedItemInfo" type="function" />
  <function name="QuestLogPushQuest" type="function">
    <summary>Shares the currently selected quest with the other party members.</summary>
  </function>
  <function name="UnitIsDeadOrGhost" type="function">
    <summary>Returns whether or not the given player is either dead or a ghost</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="fullname" type="string">
        <summary>The full name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="isDeadOrGhost" type="number" apitype="1nil">
      <summary>1 if the player is dead or a ghost, otherwise nil</summary>
    </return>
  </function>
  <function name="GetInventoryItemCooldown" type="function">
    <summary>Returns cooldown information about a current inventory item</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query.  This unit can be the player, or the currently inspected unit</summary>
    </param>
    <param name="slotId" type="string">
      <summary>An inventory slotId to query.  This id can be obtained by calling GetInventorySlotInfo() with a slot token</summary>
    </param>
    <return name="start" type="number">
      <summary>The value of GetTime() at the moment the cooldown began, or 0</summary>
    </return>
    <return name="duration" type="number">
      <summary>The length of the cooldown, or 0</summary>
    </return>
    <return name="enable" type="number">
      <summary>1 if the cooldown is enabled, otherwise 0</summary>
    </return>
  </function>
  <function name="GetAvailableTitle" type="function">
    <summary>Queries the title of the selected available quest at a quest NPC.</summary>
    <param name="index" type="number">
      <summary>The index of the quest to query.</summary>
    </param>
    <return name="title" type="string">
      <summary>The title of the quest.</summary>
    </return>
  </function>
  <function name="GetTradeSkillIcon" type="function">
    <summary>This function will return the iventory icon for the TradeSkill item at the index being queried.</summary>
    <param name="index" type="number">
      <summary>The index of the line you want to query the icon for.</summary>
    </param>
    <return name="texturePath" type="string">
      <summary>The full path to the icon's texture</summary>
    </return>
  </function>
  <function name="GetNumMacroItemIcons" type="function">
    <summary>Returns the number of available macro item icons.</summary>
    <return name="numIcons" type="number">
      <summary>The number of available macro item icons</summary>
    </return>
  </function>
  <function name="CommentatorSetMapAndInstanceIndex" type="function" />
  <function name="CastShapeshiftForm" type="function">
    <summary>Casts a shapeshift form by index</summary>
  </function>
  <function name="GetSpellCooldown" type="function">
    <summary>Returns cooldown information about a given spell.</summary>
    <param />
    <param name="bookType" type="string" optional="true">
      <summary>The type of spell book to look up spellIndex in (required when using spellIndex)</summary>
    </param>
    <return name="start" type="number">
      <summary>The value of GetTime() at the moment the cooldown began, or 0</summary>
    </return>
    <return name="duration" type="number">
      <summary>The length of the cooldown, or 0</summary>
    </return>
    <return name="enable" type="number">
      <summary>1 if the cooldown is enabled, otherwise 0</summary>
    </return>
  </function>
  <function name="SetBindingItem" type="function">
    <summary>This funcion will bind a specific key to a specific item. Hitting that key after calling this function will cause the item to be used or activated.</summary>
    <param />
    <param />
    <return name="success" type="number" apitype="1nil">
      <summary>1 if the binding was successful, otherwise nil.</summary>
    </return>
  </function>
  <function name="CloseSocketInfo" type="function">
    <summary>Closes the socket frame</summary>
  </function>
  <function name="GetPlayerMapPosition" type="function">
    <summary>Returns a unit's position on the current map zoom.  </summary>
    <param name="player" type="string" apitype="unitid">
      <summary>A unit id that refers to the current player or any player character in their party/raid.  </summary>
    </param>
    <return name="playerX" type="number">
      <summary>A number between 0 and 1 that is the specified unit's X map position on the current map zoom, from the left side of the map.  </summary>
    </return>
    <return name="playerY" type="number">
      <summary>A number between 0 and 1 that is the specified unit's Y map position on the current map zoom, from the top of the map.  </summary>
    </return>
  </function>
  <function name="CheckTalentMasterDist" type="function">
    <summary>Returns whether or not the player is in range of a talent trainer</summary>
    <return name="inRange" type="number" apitype="1nil">
      <summary>1 if the player is in range of a talent trainer, otherwise nil</summary>
    </return>
  </function>
  <function name="GetSendMailCOD" type="function" />
  <function name="MovieRecording_QueueMovieToCompress" type="function">
    <summary>Adds a movie to the compression queue, starting immediate if the queue is empty</summary>
    <param name="filename" type="string">
      <summary>The filename of a movie to add to the compression queue</summary>
    </param>
  </function>
  <function name="PetFollow" type="function">
    <summary>Sets the pet into "Follow" mode</summary>
  </function>
  <function name="GetMerchantItemLink" type="function">
    <summary>Returns the full link of the item in question, or nil if the index is out of range.</summary>
    <param name="index" type="number">
      <summary>The index of the item whos link you want returned, should be within 1 to GetMerchantNumItems().</summary>
    </param>
    <return name="itemLink" type="string">
      <summary>The link of the item being queried or nil if the index is not valid.</summary>
    </return>
  </function>
  <function name="DeclineName" type="function" />
  <function name="KBQuery_GetTotalArticleCount" type="function">
    <summary>Returns the total number of articles returned for the given query</summary>
    <return name="totalArticleHeaderCount" type="number">
      <summary>The total number of articles returned for the given query</summary>
    </return>
  </function>
  <function name="SelectAvailableQuest" type="function">
    <summary>Selects an available quest from the given NPC</summary>
    <param name="index" type="number">
      <summary>The index of the available quest in the QuestFrame</summary>
    </param>
  </function>
  <function name="TurnInPetition" type="function">
    <summary>Deprecated</summary>
  </function>
  <function name="GetMapInfo" type="function">
    <summary>Returns the map information about the current world map texture</summary>
    <return name="mapFileName" type="string">
      <summary>The name of the file containing the textures for the current world map</summary>
    </return>
    <return name="textureHeight" type="number">
      <summary>The height of the specified texture</summary>
    </return>
    <return name="textureWidth" type="string">
      <summary>The width of the specified texture</summary>
    </return>
  </function>
  <function name="GetRangedCritChance" type="function">
    <summary>Returns the player's ranged critical strike chance</summary>
    <return name="critChance" type="number">
      <summary>The player's critical strike chance with the currently equipped ranged weapon, as a floating point number</summary>
    </return>
  </function>
  <function name="UnitStat" type="function">
    <summary>Returns information about a given character statistic (intellect, stamina, etc.)</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <param name="statIndex" type="number">
      <summary>The index of the stat to query</summary>
    </param>
    <return name="stat" type="number">
      <summary>The current value of the stat</summary>
    </return>
    <return name="effectiveStat" type="number">
      <summary>The effective value of the stat (unused)</summary>
    </return>
    <return name="posBuff" type="number">
      <summary>The value of any positive buffs for the given stat</summary>
    </return>
    <return name="negBuff" type="number">
      <summary>The value of any negative buffs for the given stat</summary>
    </return>
  </function>
  <function name="IsAvailableQuestTrivial" type="function">
    <summary>Returns the trivial state for the quests available at a quest NPC.</summary>
    <param name="index" type="number">
      <summary>The index of the quest to check.</summary>
    </param>
    <return name="trivial" type="number" apitype="1nil">
      <summary>1 if the available quest is trivial, nil otherwise</summary>
    </return>
  </function>
  <function name="WithdrawGuildBankMoney" type="function">
    <summary>Attempts to withdraw an amount of money in coppers from the guild bank.  Does nothing on failure.</summary>
    <param name="money" type="number">
      <summary>Money to withdraw in coppers</summary>
    </param>
  </function>
  <function name="UnitCanAttack" type="function">
    <summary>Returns whether or not one unit can attack another unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit that would be attacking</summary>
    </param>
    <param name="otherUnit" type="string" apitype="unitid">
      <summary>The unit that would be attacked</summary>
    </param>
    <return name="canAttack" type="number" apitype="1nil">
      <summary>1 if the first unit can attack the second unit, otherwise nil</summary>
    </return>
  </function>
  <function name="SetSelectedFaction" type="function">
    <summary>Sets the current faction selection</summary>
    <param name="index" type="number">
      <summary>The index of the faction in the reputation window</summary>
    </param>
  </function>
  <function name="pcall" type="function" />
  <function name="ClearOverrideBindings" type="function">
    <summary>Clears all override bindings for a given owner</summary>
    <param name="owner" type="table">
      <summary>The owner of a set of override bindings</summary>
    </param>
  </function>
  <function name="GetItemInfo" type="function">
    <summary>Returns information about an item, by name, link or id</summary>
    <paramchoice>
      <param name="itemID" type="number">
        <summary>An item's ID</summary>
      </param>
      <param name="itemName" type="string">
        <summary>An item's name</summary>
      </param>
      <param name="itemLink" type="string">
        <summary>An item's link</summary>
      </param>
    </paramchoice>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="link" type="string">
      <summary>A link for the item</summary>
    </return>
    <return name="quality" type="number">
      <summary>The item's quality</summary>
    </return>
    <return name="iLevel" type="number">
      <summary>The internal "item level".</summary>
    </return>
    <return name="reqLevel" type="number">
      <summary>The minimum required level to use the item</summary>
    </return>
    <return name="type" type="string">
      <summary>The item type.  This may be the class of item (such as "Armor" or "Weapon") or another item class such as "quest".</summary>
    </return>
    <return name="subType" type="string">
      <summary>The item's subtype</summary>
    </return>
    <return name="maxStack" type="number">
      <summary>The maximum stack size for the item</summary>
    </return>
    <return name="equipSlot" type="string">
      <summary>A token indicating where the item can be equipped, or the empty string</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
  </function>
  <function name="GetRealmName" type="function">
    <summary>Returns the name of the player's realm (server name)</summary>
    <return name="realm" type="string">
      <summary>The name of the player's realm (server)</summary>
    </return>
  </function>
  <function name="GetPossessInfo" type="function">
    <summary>Returns information about the spells in the possess bar</summary>
    <param name="index" type="number">
      <summary>The index of the possess bar entry to query.</summary>
    </param>
    <return name="texture" type="string">
      <summary>Full path to the icon texture of the spell in the queried possess bar slot.</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the spell in the queried possess bar slot.</summary>
    </return>
  </function>
  <function name="ClickSocketButton" type="function">
    <summary>Picks up or places a gem in the Item Socketing UI</summary>
    <param name="index" type="number">
      <summary>The index of a socket in the Item Socketing UI</summary>
    </param>
  </function>
  <function name="GetCVarMin" type="function">
    <summary>Returns the minimum value allowed for a given CVar</summary>
    <param name="cvar" type="string">
      <summary>The name of the CVar to query</summary>
    </param>
    <return name="min" type="number">
      <summary>The minimum value allowed for the given CVar</summary>
    </return>
  </function>
  <function name="CommentatorGetNumPlayers" type="function" />
  <function name="AcceptSockets" type="function">
    <summary>Accepts the current socketed gems without confirmation</summary>
  </function>
  <function name="GetUnitHealthModifier" type="function">
    <summary>Returns the health modifier for a pet.  Used to modify the amount of health a pet gains from +stamina.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="modifier" type="number">
      <summary>The health modifier</summary>
    </return>
  </function>
  <function name="AssistUnit" type="function">
    <summary>Assists a player by unit or name</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>The full name of a player to add to the friends list</summary>
      </param>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid of the player to add to the friends list</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetItemCooldown" type="function">
    <summary>Returns cooldown information about a given item</summary>
    <paramchoice>
      <param name="item" type="string">
        <summary>The name of the item to query</summary>
      </param>
      <param name="itemId" type="number">
        <summary>The itemId of the item to query</summary>
      </param>
    </paramchoice>
    <return name="start" type="number">
      <summary>The value of GetTime() at the moment the cooldown began, or 0</summary>
    </return>
    <return name="duration" type="number">
      <summary>The length of the cooldown, or 0</summary>
    </return>
    <return name="enable" type="number">
      <summary>1 if the cooldown is enabled, otherwise 0</summary>
    </return>
  </function>
  <function name="GetFunctionCPUUsage" type="function">
    <summary>Returns CPU usage information about a function</summary>
    <param name="function" type="function">
      <summary>The function to query</summary>
    </param>
    <param name="includeSubroutines" type="number" apitype="1nil">
      <summary>1 to include any subroutines called by the original function, otherwise nil</summary>
    </param>
    <return name="timeUsed" type="number">
      <summary>The amount of CPU time spent inside the function</summary>
    </return>
    <return name="numCalled" type="number">
      <summary>The number of times the function has been called</summary>
    </return>
  </function>
  <function name="UseItemByName" type="function">
    <summary>Uses an item, optionally on a specified target</summary>
    <param name="name" type="string">
      <summary>The name of the item to use</summary>
    </param>
    <param name="target" type="string" apitype="unitid">
      <summary>The unit to use as the target of the item, if applicable</summary>
    </param>
  </function>
  <function name="MoveViewDownStop" type="function" />
  <function name="GetScreenResolutions" type="function">
    <summary>Returns the available screen resolutions</summary>
    <return name="..." type="string">
      <summary>A list of available screen resolutions, as strings. For example "800x600" and "1024x768".</summary>
    </return>
  </function>
  <function name="GetMacroSpell" type="function">
    <summary>Returns the spell a given macro is set to cast</summary>
    <param name="slot" type="number">
      <summary>The macro slot to query</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the spell the macro is set to cast</summary>
    </return>
    <return name="rank" type="string">
      <summary>The rank of the spell, if applicable</summary>
    </return>
  </function>
  <function name="ContainerIDToInventoryID" type="function">
    <summary>Returns the inventoryId that corresponds to a given containerId</summary>
    <param name="containerId" type="number">
      <summary>The container id</summary>
    </param>
    <return name="inventoryId" type="number">
      <summary>The inventoryId corresponding to the given container</summary>
    </return>
  </function>
  <function name="getfenv" type="function" />
  <function name="GetQuestLogRewardInfo" type="function">
    <summary>Returns information about a quest reward</summary>
    <param name="index" type="number">
      <summary>The index of the entry in the quest log</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
    <return name="numItems" type="number">
      <summary>The number of items in the stack</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality of the item</summary>
    </return>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the item is usable by the player, otherwise nil</summary>
    </return>
  </function>
  <function name="CloseMerchant" type="function">
    <summary>Closes the open merchant window</summary>
  </function>
  <function name="GetBattlefieldInstanceInfo" type="function">
    <summary>Returns a numeric ID for a battleground instance listed in the battleground instance selection window.</summary>
    <param name="index" type="number">
      <summary>The index in the battleground instance listing (with 1 corresponding to the first actual instance shown in the list after "First Available").</summary>
    </param>
    <return name="instanceID" type="number">
      <summary>The instance ID that corresponds to the given index</summary>
    </return>
  </function>
  <function name="PitchDownStop" type="function" />
  <function name="SetMacroSpell" type="function">
    <summary>Sets the spell and target unit used to update a macros icon and range indicator</summary>
    <paramchoice>
      <param name="macro" type="number">
        <summary>The macro index to change</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the macro to change</summary>
      </param>
    </paramchoice>
  </function>
  <function name="TurnRightStop" type="function" />
  <function name="seterrorhandler" type="function">
    <summary>Sets the default error handler to a specific function</summary>
    <param name="errHandler" type="function">
      <summary>The function to use as the error handler</summary>
    </param>
  </function>
  <function name="CheckReadyCheckTime" type="function">
    <summary>Unknown, called by UIParent's OnUpdate handler</summary>
  </function>
  <function name="GetMapOverlayInfo" type="function">
    <summary>Returns information about a world map overlay</summary>
    <param name="index" type="number">
      <summary>The index of a world map overlay</summary>
    </param>
    <return name="textureName" type="string">
      <summary>The path to the overlay texture file</summary>
    </return>
    <return name="textureWidth" type="number">
      <summary>The width of the texture, in pixels</summary>
    </return>
    <return name="textureHeight" type="number">
      <summary>The height of the texture, in pixels</summary>
    </return>
    <return name="offsetX" type="number">
      <summary>The X offset for anchoring the overlay with relation to the world map</summary>
    </return>
    <return name="offsetY" type="number">
      <summary>The Y offset for anchoring the overlay with relation to the world map</summary>
    </return>
    <return name="mapPointX" type="number">
      <summary>Unknown, always seems to return 0</summary>
    </return>
    <return name="mapPointY" type="number">
      <summary>Unknown, always seems to return 0</summary>
    </return>
  </function>
  <function name="PickupGuildBankItem" type="function">
    <summary>Picks up an item from the guild bank and holds it on the cursor</summary>
    <param name="tab" type="number">
      <summary>The guild bank tab</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot in the given guild bank tab</summary>
    </param>
  </function>
  <function name="CollapseChannelHeader" type="function">
    <summary>Collapses a channel header in the chat channel listing</summary>
    <param name="index" type="number">
      <summary>The index of the header in the Chat Channel window.  These indices include the actually channel listings, so the second channel may be at a higher index, depending on how many channels are listed in the first header.</summary>
    </param>
  </function>
  <function name="CanInspect" type="function">
    <summary>This function returns if the given unit can be inspected.</summary>
    <param name="unitId" type="string">
      <summary>The unitId that you want to check if you can inspect. This function only accepts unitIds and not player names.</summary>
    </param>
    <param name="showError" type="boolean">
      <summary>true to display an error in the UIErrorsFrame, otherwise false</summary>
    </param>
    <return name="canInspect" type="number" apitype="1nil">
      <summary>1 if we ca inspect the unit, otherwise nil</summary>
    </return>
  </function>
  <function name="AppendToFile" type="function" />
  <function name="GetSubZoneText" type="function">
    <summary>Returns the subzone text of the player's current zone</summary>
    <return name="subzoneText" type="string">
      <summary>The subzone text for the given zone, or the empty string.  This corresponds to sub-zones within a larger zone such as "The Ring of Trials" in Nagrand</summary>
    </return>
  </function>
  <function name="MovieRecording_Cancel" type="function">
    <summary>Cancels a currently recording video</summary>
  </function>
  <function name="GetNetStats" type="function">
    <summary>Returns the game's network statistics</summary>
    <return name="bandwidthIn" type="number">
      <summary>The current incomming bandwidth (download) usage, measured in KB/s</summary>
    </return>
    <return name="bandwidthOut" type="number">
      <summary>The current outgoing bandwidth (upload) usage, measured in KB/s</summary>
    </return>
    <return name="latency" type="number">
      <summary>The current latency to the server, measured in milliseconds</summary>
    </return>
  </function>
  <function name="TaxiNodePosition" type="function">
    <summary>Returns the position of a taxi node in the taxi window</summary>
    <param name="index" type="number">
      <summary>The index of the taxi node</summary>
    </param>
    <return name="x" type="number">
      <summary>The x coordinate of the taxi node in the taxi window, as a percentage of the width of the frame</summary>
    </return>
    <return name="y" type="number">
      <summary>The y coordinate of the taxi node in the taxi window, as a percentage of the height of the frame</summary>
    </return>
  </function>
  <function name="ClearTutorials" type="function">
    <summary>Clears any already displayed tutorials so they are displayed again</summary>
  </function>
  <function name="SplitGuildBankItem" type="function">
    <summary>Splits an item in a given tab and slot, placing the new stack on the cursor.</summary>
    <param name="tab" type="number">
      <summary>The index of the tab that holds the item to be split</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot that contains the item to be split</summary>
    </param>
    <param name="amount" type="number">
      <summary>The number of items to split from the main stack</summary>
    </param>
  </function>
  <function name="GetSavedInstanceInfo" type="function">
    <summary>Returns information on a specific instance the character is saved to.</summary>
    <param name="index" type="number">
      <summary>Saved instance ID to query between 1 and GetNumSavedInstances()</summary>
    </param>
    <return name="instanceName" type="string">
      <summary>Name of the instance</summary>
    </return>
    <return name="instanceID" type="number">
      <summary>ID of the instance</summary>
    </return>
    <return name="instanceReset" type="number">
      <summary>Timestamp indicating time till reset</summary>
    </return>
  </function>
  <function name="AttackTarget" type="function">
    <summary>Enables melee auto-attacking against the currently selected target</summary>
  </function>
  <function name="GetBankSlotCost" type="function">
    <summary>Returns the cost of a bank slot.</summary>
    <param name="index" type="number">
      <summary>The index of the bank slot</summary>
    </param>
    <return name="cost" type="number">
      <summary>The cost of the bank slot, in copper</summary>
    </return>
  </function>
  <function name="Sound_ChatSystem_GetNumOutputDrivers" type="function">
    <summary>Returns the number of chat system sound output drivers</summary>
  </function>
  <function name="GetCurrentArenaSeason" type="function">
    <summary>Returns the current arena season.</summary>
    <return name="season" type="number">
      <summary>The current arena season</summary>
    </return>
  </function>
  <function name="GetLFGStatusText" type="function">
    <summary>Returns information on your current Looking For Group status.</summary>
    <return name="isLFG" type="boolean">
      <summary>true if the character is looking for group, false if looking for more.</summary>
    </return>
    <return name="numCriteria" type="number">
      <summary>Amount of extra criteria after this parameter</summary>
    </return>
    <return name="...">
      <summary>Repeating list of isLFG, numCriteria pairs.</summary>
    </return>
  </function>
  <function name="TurnOrActionStart" type="function" />
  <function name="GetLanguageByIndex" type="function">
    <summary>Returns the localized name of the language identified by the index being queried</summary>
    <param name="index" type="number">
      <summary>The index of the language being queried. Runs from 1 to GetNumLaguages() (That function is spelled that way, its a Blizzard typo)</summary>
    </param>
    <return name="language" type="string">
      <summary>The name of the language, such as "Common" or "Gnomish"</summary>
    </return>
  </function>
  <function name="SetCurrentGuildBankTab" type="function">
    <summary>Sets the currently selected guild bank tab</summary>
    <param name="tab" type="number">
      <summary>The guild bank tab index</summary>
    </param>
  </function>
  <function name="CommentatorSetCameraCollision" type="function" />
  <function name="GMSurveyQuestion" type="function">
    <summary>Returns the text of a specific question from a GM survey</summary>
    <param name="index" type="number">
      <summary>The index of a GM survey question</summary>
    </param>
    <return name="surveyQuestion" type="string">
      <summary>The question being asked</summary>
    </return>
  </function>
  <function name="GetInboxInvoiceInfo" type="function">
    <summary>Returns information about an auction house invoice</summary>
    <param name="index" type="number">
      <summary>The index of the invoice in the inbox</summary>
    </param>
    <return name="invoiceType" type="string">
      <summary>The type of invoice</summary>
    </return>
    <return name="itemName" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="playerName" type="string" />
    <return name="bid" type="number">
      <summary>The winning bid amount, if a bid won the auction</summary>
    </return>
    <return name="buyout" type="number">
      <summary>The buyout amount, if a buyout won the auction</summary>
    </return>
    <return name="deposit" type="number">
      <summary>The amount of money paid in deposit</summary>
    </return>
    <return name="consignment" type="number">
      <summary>The auction house charge for selling your item</summary>
    </return>
    <return name="moneyDelay" type="number">
      <summary>The delay of pending payment, in minutes.  Every auction house temporary invoice will have a delay of 60 minutes</summary>
    </return>
    <return name="etaHour" type="number">
      <summary>The hour portion of the estimated time of arrival for the payment.  If the ETA is 9:37 server time, this value will be the number 9.</summary>
    </return>
    <return name="etaMin" type="number">
      <summary>The minute portion of the estimated time of arrival for the payment.  If the ETA is 9:37 server time, this value will be the number 37.</summary>
    </return>
  </function>
  <function name="GetTradeTargetItemLink" type="function">
    <summary>Returns an item link for an item being offered by the target in a trade</summary>
    <param name="index" type="number">
      <summary>The index of the target's trade item</summary>
    </param>
    <return name="link" type="string">
      <summary>The link for the given item</summary>
    </return>
  </function>
  <function name="VoicePushToTalkStart" type="function">
    <summary>Used internally to start talking, when push-to-talk is active in voice chat.</summary>
  </function>
  <function name="strtrim" type="function">
    <summary>Trims leading and trailing whitespace from a string</summary>
    <param name="str" type="string">
      <summary>The string to trim</summary>
    </param>
    <return name="text" type="string">
      <summary>The string wth any training or leading whitespace removed</summary>
    </return>
  </function>
  <function name="InboxItemCanDelete" type="function">
    <summary>Returns whether or not an inbox item can be deleted</summary>
    <param name="index" type="number">
      <summary>The index of the message in the inbox</summary>
    </param>
    <return name="canDelete" type="number" apitype="1nil">
      <summary>1 if the mail message can be deleted, otherwise nil</summary>
    </return>
  </function>
  <function name="GetChatWindowChannels" type="function">
    <summary>Returns a list of all channels that a given chat window is interested in</summary>
    <param name="index" type="number">
      <summary>The index of the chat frame to query</summary>
    </param>
    <return name="channelName" type="string">
      <summary>The name of the channel</summary>
    </return>
    <return name="channelId" type="number">
      <summary>A numeric id for the given channel</summary>
    </return>
    <return name="...">
      <summary>A repeating list of channelName, channelId pairs, for each channel belonging to a given chat window</summary>
    </return>
  </function>
  <function name="GetCoinIcon" type="function">
    <summary>Returns a texture path for an icon depending on the amount passed.</summary>
    <param name="amount" type="number">
      <summary>Amount of money in copper</summary>
    </param>
    <return name="icon" type="string">
      <summary>Texture path for the icon corresponding to the largest coin for the given amount</summary>
    </return>
  </function>
  <function name="strconcat" type="function" />
  <function name="GetProgressText" type="function">
    <summary>Returns the quest progress text given by an NPC</summary>
    <return name="text" type="string">
      <summary>The progress text for a given quest.  This is the text displayed when turning a quest into an NPC.  The progress text will be displayed, and the "Continue" option will be available to turn in the quest, as long as the objectives are complete</summary>
    </return>
  </function>
  <function name="DropItemOnUnit" type="function">
    <summary>Drops the currently held item on a specific unit</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitId of the player to drop the item on</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of a player to drop the item on</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetItemFamily" type="function">
    <summary>Returns the bag type of the given item</summary>
    <paramchoice>
      <param name="itemID" type="number">
        <summary>The item's ID</summary>
      </param>
      <param name="&quot;itemName&quot;" type="string">
        <summary>The item's name</summary>
      </param>
      <param name="&quot;itemLink&quot;" type="string">
        <summary>The item's link</summary>
      </param>
    </paramchoice>
    <return name="bagType">
      <summary>The item's bag type</summary>
    </return>
  </function>
  <function name="GetCurrentGuildBankTab" type="function">
    <summary>Returns the currently selected guild bank tab</summary>
    <param name="currentTab" type="number">
      <summary>The currently selected guild bank tab</summary>
    </param>
  </function>
  <function name="GetNumGuildBankMoneyTransactions" type="function">
    <summary>Returns the number of guild bank money transactions available for the money log</summary>
    <return name="numTransactions" type="number">
      <summary>The number of guild bank money transactions available for the money log</summary>
    </return>
  </function>
  <function name="rawequal" type="function" />
  <function name="IsCurrentSpell" type="function">
    <summary>Returns whether or not a given spell is currently being cast or awaiting targeting</summary>
    <paramchoice>
      <param name="spellName" type="string">
        <summary>The name of a spell</summary>
      </param>
      <param name="spellId" type="number">
        <summary>The spellId of a spell</summary>
      </param>
    </paramchoice>
    <return name="isCurrent" type="number" apitype="1nil">
      <summary>1 if the given spell is currently being cast, or awaiting targeting</summary>
    </return>
  </function>
  <function name="newproxy" type="function" />
  <function name="GetSpellTexture" type="function">
    <summary>Returns the texture path for a given spell</summary>
    <param name="id" type="number">
      <summary>The spell id</summary>
    </param>
    <param name="bookType" type="string">
      <summary>The type of spell book</summary>
    </param>
    <return name="texture" type="string">
      <summary>The path to the spell icon's texture</summary>
    </return>
  </function>
  <function name="FlipCameraYaw" type="function">
    <summary>Rotates the camera around the player</summary>
    <param name="degrees" type="number">
      <summary>The number of degrees to rotate; positive for counter-clockwise, negative for clockwise.</summary>
    </param>
  </function>
  <function name="UpdateAddOnCPUUsage" type="function">
    <summary>Scan through the profiling data and update the per-addon statistics</summary>
  </function>
  <function name="GetGuildBankText" type="function">
    <summary>Returns the text from the info pane for the given guild bank tab</summary>
    <param name="tab" type="number">
      <summary>The guild bank tab to use</summary>
    </param>
    <return name="text" type="string">
      <summary>Info contents</summary>
    </return>
  </function>
  <function name="GetBuildInfo" type="function">
    <summary>Returns the version information about the client</summary>
    <return name="version" type="string">
      <summary>The version number of the client (such as 2.3.0)</summary>
    </return>
    <return name="internalVersion" type="string">
      <summary>The internal version number of the client (such as 7561)</summary>
    </return>
    <return name="date" type="string">
      <summary>The release date of the client (such as Nov 8 2007)</summary>
    </return>
  </function>
  <function name="RequestRaidInfo" type="function">
    <summary>Requests raid information from the server</summary>
  </function>
  <function name="GetNumPetitionItems" type="function" />
  <function name="UnitName" type="function">
    <summary>Returns the name of a given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the unit</summary>
    </return>
  </function>
  <function name="GetItemCount" type="function">
    <summary>Returns the number of a given item the player has in possession (possibly including bank)</summary>
    <paramchoice>
      <param name="itemId" type="number">
        <summary>An item id</summary>
      </param>
      <param name="itemName" type="string">
        <summary>An item name</summary>
      </param>
      <param name="itemLink" type="string">
        <summary>An item link</summary>
      </param>
    </paramchoice>
    <return name="itemCount" type="number">
      <summary>The number of the given item the player has in possession (possibly including items in the bank)</summary>
    </return>
  </function>
  <function name="GetFirstTradeSkill" type="function">
    <summary>Returns the index of the first tradeskill recipe, as opposed to tradeskill headers</summary>
    <return name="index" type="number">
      <summary>The index of the first tradeskill recipe, as opposed to tradeskill headers</summary>
    </return>
  </function>
  <function name="CancelTrade" type="function">
    <summary>Cancels an active trade</summary>
  </function>
  <function name="BindEnchant" type="function">
    <summary>Confirms enchanting an item, when it would cause the item to become soulbound</summary>
  </function>
  <function name="ResetPerformanceValues" type="function" />
  <function name="FocusUnit" type="function">
    <summary>Sets the given unit as your focus target.  Passing nil will clear your focus.  Can only be called by the blizzard UI.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to focus</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to focus</summary>
      </param>
    </paramchoice>
  </function>
  <function name="ClearPartyAssignment" type="function">
    <summary>Clears a specified assignment (main tank, main assist) for the specified unit, or all raid members if not specified.</summary>
    <param name="assignment" type="string">
      <summary>The token for the party assigment that you want to clear</summary>
    </param>
    <param name="raidMember" type="string">
      <summary>The UnitId or name of the party or raid member whose assignment you want to clear. If nil it will clear the assignment from every member of the raid.</summary>
    </param>
    <param name="exactMatch" type="boolean">
      <summary>true if you want an exact match for the player name, otherwise false</summary>
    </param>
  </function>
  <function name="GetBattlefieldPosition" type="function">
    <summary>Returns information on the queried players position in a battleground</summary>
    <param name="index" type="number">
      <summary>Player index between 1 and GetNumBattlefieldPositions()</summary>
    </param>
    <return name="x" type="number">
      <summary>Position on the map between 0 and 1</summary>
    </return>
    <return name="y" type="number">
      <summary>Position on the map between 0 and 1</summary>
    </return>
    <return name="name" type="string">
      <summary>Name of the player on the map</summary>
    </return>
  </function>
  <function name="GetRealZoneText" type="function">
    <summary>When in an instance, returns the real name of the instance, not the name in the Minimap</summary>
    <return name="zoneName" type="string">
      <summary>The real name of the instance or zone name</summary>
    </return>
  </function>
  <function name="setfenv" type="function" />
  <function name="UnitIsPartyLeader" type="function">
    <summary>Returns 1 if the specified unit is the leader of the players party.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The full name of the unit to query</summary>
      </param>
    </paramchoice>
    <return name="leader" type="number" apitype="1nil">
      <summary>1 if the unit is the party leader, nil otherwise</summary>
    </return>
  </function>
  <function name="GetSpellAutocast" type="function">
    <summary>Returns whether a spell can be autocasted and is currently being autocast.</summary>
    <param name="spellid" type="number">
      <summary>The spellid to query</summary>
    </param>
    <param name="bookType" type="string">
      <summary>The type of spellbook</summary>
    </param>
    <return name="autoCastAllowed" type="number" apitype="1nil">
      <summary>Can this spell be autocast or not.</summary>
    </return>
    <return name="autoCastEnabled" type="number" apitype="1nil">
      <summary>Is this spell currently being autocast or not.</summary>
    </return>
  </function>
  <function name="PickupItem" type="function">
    <summary>Picks up an item by name or id and holds it on the cursor</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>The name of an item</summary>
      </param>
      <param name="itemId" type="number">
        <summary>The itemId of an item</summary>
      </param>
    </paramchoice>
  </function>
  <function name="ConfirmTalentWipe" type="function">
    <summary>Confirms the player unlearning all talents</summary>
  </function>
  <function name="GetGossipActiveQuests" type="function">
    <summary>Returns a list of the available quests during a Gossip interaction</summary>
    <return name="name" type="string">
      <summary>The name of the quest</summary>
    </return>
    <return name="level" type="number">
      <summary>The level of the quest</summary>
    </return>
    <return name="...">
      <summary>A repeating list of name and level pairs</summary>
    </return>
  </function>
  <function name="CombatLogAdvanceEntry" type="function">
    <summary>Advances through the filtered combat log entries.</summary>
    <param name="count" type="number" />
    <return name="hasEntry" type="number" />
  </function>
  <function name="CollapseTradeSkillSubClass" type="function">
    <summary>This function collapses the specified index in the TradeSkill UI</summary>
    <param name="index" type="number">
      <summary>The index of the sub-class you want to collapse</summary>
    </param>
  </function>
  <function name="CameraOrSelectOrMoveStop" type="function">
    <summary>Ends a left-click in the 3-D world</summary>
    <param name="isSticky" type="number" apitype="1nil">
      <summary>If 1, the camera will remain static until cancelled. Otherwise, the camera will pan back to be directly behind the character</summary>
    </param>
  </function>
  <function name="GetSendMailPrice" type="function">
    <summary>Returns the cost associated with sending an ingame mail message.</summary>
    <return name="price" type="number">
      <summary>The cost of sending a mail message in copper.</summary>
    </return>
  </function>
  <function name="GetNumLanguages" type="function">
    <summary>Returns the number of languages the player's character can speak</summary>
  </function>
  <function name="CanMerchantRepair" type="function">
    <summary>Returns whether or not the open merchant can repair equipment</summary>
    <return name="canRepair" type="number" apitype="1nil">
      <summary>1 if the merchant can repair equipment, otherwise nil</summary>
    </return>
  </function>
  <function name="pairs" type="function" />
  <function name="GetShieldBlock" type="function">
    <summary>Returns the amount of damage stopped by a sucessful block.</summary>
    <return name="damage" type="number">
      <summary>The amount of damage stopped by a sucessful block.</summary>
    </return>
  </function>
  <function name="DropCursorMoney" type="function">
    <summary>Drops the money currently held to the cursor, returning it to where it was taken from</summary>
  </function>
  <function name="FactionToggleAtWar" type="function">
    <summary>Toggles the 'at war' status towards a specific faction</summary>
    <param name="index" type="number">
      <summary>The row index of the faction with which to toggle atWar status.</summary>
    </param>
  </function>
  <function name="AddOrDelIgnore" type="function">
    <summary>Adds or removes a player from the ignore list</summary>
    <param name="fullname" type="string">
      <summary>The player to add or remove from the ignore list</summary>
    </param>
  </function>
  <function name="ExpandTradeSkillSubClass" type="function">
    <summary>Expands a tradeskill subclass in the tradeskill window</summary>
    <param name="index" type="number">
      <summary>The index of the tradeskill subclass in the tradeskill window.  If the index specified is a tradeskill item rather than a subclass heading, this function will error.</summary>
    </param>
  </function>
  <function name="EnumerateServerChannels" type="function">
    <summary>Returns the available server channel names</summary>
    <return name="..." type="string">
      <summary>A list of the available server channel names.  For example: "General", "Trade", "WorldDefense", "GuildRecruitment", "LookingForGroup".</summary>
    </return>
  </function>
  <function name="GetParryChance" type="function">
    <summary>Returns the player's percentage parry chance</summary>
    <return name="chance" type="number">
      <summary>Player's Parry chance in percentage</summary>
    </return>
  </function>
  <function name="GetLatestThreeSenders" type="function">
    <summary>Returns the names of the last three senders of unchecked mail</summary>
    <return name="sender1" type="string">
      <summary>The name of the sender of an unchecked mail</summary>
    </return>
    <return name="sender2" type="string">
      <summary>The name of the sender of an unchecked mail</summary>
    </return>
    <return name="sender3" type="string">
      <summary>The name of the sender of an unchecked mail</summary>
    </return>
  </function>
  <function name="EquipPendingItem" type="function">
    <summary>Confirms equpping a pending bind-on-equip item</summary>
    <param name="slotId" type="number">
      <summary>The inventory slot id</summary>
    </param>
  </function>
  <function name="IsUnitOnQuest" type="function">
    <summary>Checks if a specified unit is on a quest from the players quest log.</summary>
    <param name="index" type="number">
      <summary>The quest index to query.</summary>
    </param>
    <param name="unit" type="string">
      <summary>The name of the unit to query.</summary>
    </param>
    <return name="state" type="number" apitype="1nil">
      <summary>1 if the unit is on that quest, nil otherwise</summary>
    </return>
  </function>
  <function name="DeleteInboxItem" type="function">
    <summary>Deletes the given mail from your inbox.</summary>
    <param name="index" type="number">
      <summary>Inbox item to delete.</summary>
    </param>
  </function>
  <function name="GuildSetLeader" type="function">
    <summary>Promotes the specified player to be the new guild leader.</summary>
    <param name="name" type="string">
      <summary>The name of the guild member to promote to leader.</summary>
    </param>
  </function>
  <function name="ArenaTeamSetLeaderByName" type="function">
    <summary>Promotes an arena team member to team leader</summary>
    <param name="team" type="number">
      <summary>The index of the arena team</summary>
    </param>
    <param name="name" type="string">
      <summary>The name of the player to promote to team leader</summary>
    </param>
  </function>
  <function name="GetIgnoreName" type="function">
    <summary>Returns the name of the specified ignored person.</summary>
    <param name="index" type="string">
      <summary>The index of the ignore.</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the ignored person.</summary>
    </return>
  </function>
  <function name="CommentatorGetInstanceInfo" type="function" />
  <function name="SortLFG" type="function">
    <summary>Sets the sort type for a Looking for Group query</summary>
    <param name="sortType" type="string">
      <summary>The sort method to be used</summary>
    </param>
  </function>
  <function name="GetGuildRosterInfo" type="function">
    <summary>Returns information about the selected player in your guild roster.</summary>
    <param name="index" type="number">
      <summary>The player index in the guild roster.</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player</summary>
    </return>
    <return name="rank" type="string">
      <summary>The rank of the player</summary>
    </return>
    <return name="rankIndex" type="number">
      <summary>The rankIndex of the player</summary>
    </return>
    <return name="level" type="number">
      <summary>The level of the player</summary>
    </return>
    <return name="level" type="number">
      <summary>The level of the player</summary>
    </return>
    <return name="class" type="string">
      <summary>The (localized) class of the player</summary>
    </return>
    <return name="note" type="string">
      <summary>The public note of the player</summary>
    </return>
    <return name="officernote" type="string">
      <summary>The officer note of the player, if the player has permission to view it</summary>
    </return>
    <return name="online" type="number" apitype="1nil">
      <summary>1 if the player is online, nil otherwise</summary>
    </return>
    <return name="status" type="string">
      <summary>The status of the player</summary>
    </return>
    <return name="classFileName" type="string">
      <summary>The class filename of the player - unlocalized</summary>
    </return>
  </function>
  <function name="GetLootRollItemInfo" type="function">
    <summary>Returns information about the specified item to roll on.</summary>
    <param name="id" type="number">
      <summary>The index of the loot roll.  Each new item that is rolled on increments this number by one so two items won't have the same roll index.</summary>
    </param>
    <return name="texture" type="string">
      <summary>The icon texture of the item.</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the item.</summary>
    </return>
    <return name="count" type="number">
      <summary>The stacksize of the item.</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality of the item.</summary>
    </return>
    <return name="bindOnPickUp" type="number" apitype="1nil">
      <summary>1 if the item is bind on pickup, nil otherwise.</summary>
    </return>
  </function>
  <function name="log10" type="function">
    <summary>This function is simply an alias for math.log10</summary>
  </function>
  <function name="GetBattlefieldStatInfo" type="function">
    <summary>Used to retrieve a list of custom scoreboard columns inside a battleground</summary>
    <return name="text" type="string">
      <summary>The name of the column</summary>
    </return>
    <return name="icon" type="string">
      <summary>The path to the stat's icon texture</summary>
    </return>
    <return name="tooltip" type="string">
      <summary>The text to be displayed in the tooltip on mouseover</summary>
    </return>
  </function>
  <function name="TutorialsEnabled" type="function">
    <summary>Returns the status of the tutorials, if they are enabled or not.</summary>
    <return name="enabled" type="number" apitype="1nil">
      <summary>1 if tutorials are enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="GetFriendInfo" type="function">
    <summary>Returns information about someone on the player's friends list</summary>
    <param name="index" type="number">
      <summary>The index of a friend in the friends list</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the friend</summary>
    </return>
    <return name="level" type="number">
      <summary>The friend's level if they are online, otherwise 0</summary>
    </return>
    <return name="class" type="string">
      <summary>The friend's class if they are online, otherwise "Unknown".</summary>
    </return>
    <return name="area" type="string">
      <summary>The current location of the friend if they are online, otherwise "Unknown".</summary>
    </return>
    <return name="connected" type="number" apitype="1nil">
      <summary>1 if the friend is online, otherwise nil</summary>
    </return>
    <return name="status" type="string">
      <summary>The status string for the player, i.e. &lt;AFK&gt; or &lt;DND&gt;.  Otherwise, the empty string.</summary>
    </return>
  </function>
  <function name="GetNextStableSlotCost" type="function">
    <summary>Returns the cost of the next available stable slot</summary>
    <return name="money" type="number">
      <summary>The cost of the next available stable slot, in copper</summary>
    </return>
  </function>
  <function name="GetBillingTimeRested" type="function">
    <summary>Returns the number of minutes offline required for full xp.</summary>
    <return name="time" type="number">
      <summary>Minutes of rest required for full xp.</summary>
    </return>
  </function>
  <function name="TaxiGetDestX" type="function">
    <summary>Returns the X coordinate of the destination texi node, relative to the taxi frame</summary>
    <param name="source" type="number">
      <summary>The source taxi node</summary>
    </param>
    <param name="dest" type="number">
      <summary>The destination taxi node</summary>
    </param>
    <return name="dX" type="number">
      <summary>The X coordinate of the destination taxi node, relative to the width of the taxi frame</summary>
    </return>
  </function>
  <function name="GetGuildCharterCost" type="function">
    <summary>Returns the cost of a guild charter</summary>
    <return name="cost" type="number">
      <summary>The cost of a guild charter, in copper</summary>
    </return>
  </function>
  <function name="GetNumMacroIcons" type="function">
    <summary>Returns the number of available macro icons</summary>
    <return name="numMacroIcons" type="number">
      <summary>The number of available macro icons</summary>
    </return>
  </function>
  <function name="GetNumGuildMembers" type="function">
    <summary>Returns the number of members in the player's guild</summary>
    <return name="numGuildMembers" type="number">
      <summary>The number of members in the player's guild</summary>
    </return>
  </function>
  <function name="GetSkillLineInfo" type="function">
    <summary>Returns information about a given skill line</summary>
    <param name="index" type="number">
      <summary>The index of the skill line</summary>
    </param>
    <return name="skillName" type="string">
      <summary>The name of the skill</summary>
    </return>
    <return name="header" type="number" apitype="1nil">
      <summary>1 if the skill line is a header, instead of a skill</summary>
    </return>
    <return name="isExpanded" type="number" apitype="1nil">
      <summary>1 if the skill line is a header and is expanded, otherwise nil</summary>
    </return>
    <return name="skillRank" type="number">
      <summary>The rank of the skill</summary>
    </return>
    <return name="numTempPoints" type="number">
      <summary>The temporary profession rank increase (for example 15 for engineering for Gnomes due to the racial trait)</summary>
    </return>
    <return name="skillModifier" type="number">
      <summary>The temporary rank modifier due to buffs, equipment, etc. (for example +Defense gear and the Defense skill)</summary>
    </return>
    <return name="skillMaxRank" type="number">
      <summary>The max rank available</summary>
    </return>
    <return name="isAbandonable" type="number" apitype="1nil">
      <summary>1 if the skill can be unlearnt, otherwise nil</summary>
    </return>
    <return name="stepCost" type="number">
      <summary>Unused return value</summary>
    </return>
    <return name="rankCost" type="number">
      <summary>Unused return value</summary>
    </return>
    <return name="minLevel" type="number">
      <summary>The minimum level required to learn the skill</summary>
    </return>
    <return name="skillCostType" type="number">
      <summary>Unused return value</summary>
    </return>
    <return name="skillDescription" type="string">
      <summary>The description of the skill</summary>
    </return>
  </function>
  <function name="PrevView" type="function">
    <summary>Change the camera view to the previous predefined camera angle.</summary>
  </function>
  <function name="GetTradeSkillSubClasses" type="function">
    <summary>Returns a list of tradeskill subclasses</summary>
    <return name="..." type="string">
      <summary>A string for every tradeskill subclass for the given tradeskill.</summary>
    </return>
  </function>
  <function name="InRepairMode" type="function">
    <summary>Returns whether or not the player is currently in "item repair mode"</summary>
    <return name="inRepair" type="number" apitype="1nil">
      <summary>1 if the player is currently in "repair mode", otherwise nil.</summary>
    </return>
  </function>
  <function name="IsVoiceChatAllowed" type="function">
    <summary>Returns whether or not the current client/account is allowed to use the voice chat feature</summary>
    <return name="isAllowed" type="number" apitype="1nil">
      <summary>1 if voice chat is allowed, otherwise nil</summary>
    </return>
  </function>
  <function name="TogglePVP" type="function">
    <summary>Toggles the player's PvP state.</summary>
  </function>
  <function name="GetLFGResults" type="function">
    <summary>Returns information about a specific line of a LFM/LFG query</summary>
    <param name="type" type="number">
      <summary>The type of LFG query.  Valid values can be obtained using GetLFGTypes().</summary>
    </param>
    <param name="lfgNdx" type="number">
      <summary>The dungeon/quest index of the query.  Valid values can be obtained using GetLFGTypeEntries().</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player</summary>
    </return>
    <return name="level" type="number">
      <summary>The player's level</summary>
    </return>
    <return name="zone" type="string">
      <summary>The player's current location</summary>
    </return>
    <return name="class" type="string">
      <summary>The player's class</summary>
    </return>
    <return name="criteria1" type="string">
      <summary>The player's first selected LFG/LFM option</summary>
    </return>
    <return name="criteria2" type="string">
      <summary>The player's second selected LFG/LFM option</summary>
    </return>
    <return name="criteria3" type="string">
      <summary>The player's third selected LFG/LFM option</summary>
    </return>
    <return name="comment" type="string">
      <summary>The player's comment, if any</summary>
    </return>
    <return name="numPartyMembers" type="number">
      <summary>The number of current party members</summary>
    </return>
    <return name="isLFM" type="boolean">
      <summary>true if the player is looking for more members, otherwise nil</summary>
    </return>
    <return name="classFileName" type="string">
      <summary>The uppercase english name of the player's class</summary>
    </return>
  </function>
  <function name="UnitCanAssist" type="function">
    <summary>Returns whether or not one unit can assist another</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The first unitid to query</summary>
    </param>
    <param name="otherUnit" type="string" apitype="unitid">
      <summary>The second unitid to query</summary>
    </param>
    <return name="canAssist" type="number" apitype="1nil">
      <summary>1 if the first unit can assist the second, otherwise nil</summary>
    </return>
  </function>
  <function name="UnitRaceBase" type="function">
    <summary>Retrieves the unit's race</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="race" type="string">
      <summary>The localized name of the queried unit's race</summary>
    </return>
    <return name="fileName" type="string">
      <summary>The english name of the queried unit's race, as used in the various artwork files.</summary>
    </return>
  </function>
  <function name="LFGQuery" type="function">
    <summary>Sends a looking for group request, optionally filtered by class</summary>
    <param name="typeID" type="number">
      <summary>The type of LFG Query.  This value can be obtained using GetLFGTypes()</summary>
    </param>
    <param name="lfgNdx" type="number">
      <summary>The index of a specific quest/dungeon.  Acceptable values can be obtained using GetLFGTypeEntries() with the type argument from above</summary>
    </param>
    <param name="class" type="number">
      <summary>A class filter to apply to the results</summary>
    </param>
  </function>
  <function name="MovieRecording_Toggle" type="function">
    <summary>Begins recording a new video, or stops the currently recording video</summary>
  </function>
  <function name="strlower" type="function">
    <summary>This function is simply an alias for string.lower</summary>
  </function>
  <function name="GetRewardMoney" type="function">
    <summary>Returns the amount of money rewarded for the quest that is currently being viewed.</summary>
    <return name="money" type="number">
      <summary>The amount of money rewarded for the quest, in copper</summary>
    </return>
  </function>
  <function name="GetBattlefieldInfo" type="function">
    <summary>Returns information about a battleground when speaking to a battlemaster NPC or attempting to enter a battleground instance portal</summary>
    <return name="mapName" type="string">
      <summary>The name of the map</summary>
    </return>
    <return name="mapDescription" type="string">
      <summary>The description of the map</summary>
    </return>
    <return name="minLevel" type="number">
      <summary>The minimum level required to enter the battleground</summary>
    </return>
    <return name="maxLevel" type="number">
      <summary>The maximum level allowed in the battleground</summary>
    </return>
    <return name="mapID" type="number">
      <summary>Currently unused; always returns -1</summary>
    </return>
    <return name="mapX" type="number">
      <summary>Currently unused; returns 0 for most battlegrounds.</summary>
    </return>
    <return name="mapY" type="number">
      <summary>Currently unused; returns 0 for most battlegrounds.</summary>
    </return>
    <return name="minBracket" type="number">
      <summary>The minimum level allowed in this battlefield's bracket</summary>
    </return>
    <return name="maxBracket" type="number">
      <summary>The maximum level allowed in this battlefield's bracket</summary>
    </return>
  </function>
  <function name="GetNumDeclensionSets" type="function">
    <summary>This function is not currently used</summary>
  </function>
  <function name="SetTrainerSkillLineFilter" type="function">
    <summary>Sets the state of a skill line filter in the trainer ui</summary>
    <param name="index" type="number">
      <summary>The index of a skill line filter.  These are any of the major headings at a trainer, such as "Frost", "Fire" and "Arcae", or "Development Skills" and "Recipes"</summary>
    </param>
    <param name="status" type="number" optional="true">
      <summary>The new status of the given filter</summary>
    </param>
    <param name="exclusive" type="number" optional="true">
      <summary>Turns off all other filters, if the filter is being enabled</summary>
    </param>
  </function>
  <function name="PromoteToAssistant" type="function">
    <summary>Promotes a player or unit to raid assistant</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to promote</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to promote</summary>
      </param>
    </paramchoice>
  </function>
  <function name="IsLeftControlKeyDown" type="function">
    <summary>Returns whether or not the left Control key is held down</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if the left Control key is held down</summary>
    </return>
  </function>
  <function name="SetTerrainMip" type="function">
    <summary>Sets the value of the "Terrain Detail Level" slider in the video options</summary>
    <param name="terrainDetailLevel" type="number">
      <summary>The value to set for the "Terrain Detail Level" slider in the Video options.  This is a either 0 or 1.</summary>
    </param>
  </function>
  <function name="GetPetitionInfo" type="function">
    <summary>Returns information about the currently open petition</summary>
    <return name="petitionType" type="string">
      <summary>The type of the petition</summary>
    </return>
    <return name="title" type="string">
      <summary>The title of the petition</summary>
    </return>
    <return name="bodyText" type="string">
      <summary>The text (body) of the petition</summary>
    </return>
    <return name="maxSignatures" type="number">
      <summary>The maximum number of signatures allowed</summary>
    </return>
    <return name="originatorName" type="string">
      <summary>The person who initially purchased the charter</summary>
    </return>
    <return name="isOriginator" type="number" apitype="1nil">
      <summary>1 if the current player is the charter's originator</summary>
    </return>
    <return name="minSignatures" type="number">
      <summary>The minimum number of signatures required for this charter</summary>
    </return>
  </function>
  <function name="IsLeftShiftKeyDown" type="function">
    <summary>Returns whether or not the left Shift key on the keyboard is held down</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if the left Shift key on the keyboard is currently held down</summary>
    </return>
  </function>
  <function name="GetTerrainMip" type="function">
    <summary>Returns the value of the "Terrain Detail Level" slider in the video options</summary>
    <return name="terrainDetailLevel" type="number">
      <summary>The value of the "Terrain Detail Level" slider in the Video options.  This is either 0 or 1.</summary>
    </return>
  </function>
  <function name="SetPortraitTexture" type="function">
    <summary>Sets a portrait texture based on a unit's model</summary>
    <param name="texture" type="table">
      <summary>The texture object to set</summary>
    </param>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to use for the portrait texture</summary>
    </param>
  </function>
  <function name="SetTradeMoney" type="function">
    <summary>Sets the amount of money to trade in the trade window, in copper</summary>
    <param name="amount" type="number">
      <summary>The amount of money to trade, in copper</summary>
    </param>
  </function>
  <function name="ChannelUnban" type="function">
    <summary>Unbans a player from a given channel</summary>
    <param name="channel" type="string">
      <summary>The name of the channel</summary>
    </param>
    <param name="player" type="string">
      <summary>The name of the player</summary>
    </param>
  </function>
  <function name="DisplayChannelOwner" type="function">
    <summary>Fires a &lt;cit&gt;CHANNEL_OWNER&lt;/cit&gt; event for the given channel</summary>
    <param />
  </function>
  <function name="GetNumTitles" type="function">
    <summary>Returns the number of available player titles</summary>
    <return name="numTitles" type="number">
      <summary>The number of available player titles</summary>
    </return>
  </function>
  <function name="LootSlotIsItem" type="function">
    <summary>Returns whether or not a given loot slot contains an item</summary>
    <param name="slot" type="number">
      <summary>A slot index in the current loot window</summary>
    </param>
    <return name="isItem" type="number" apitype="1nil">
      <summary>1 if the loot slot contains an item, otherwise nil</summary>
    </return>
  </function>
  <function name="ComplainInboxItem" type="function">
    <summary>Reports an inbox item as spam</summary>
    <param name="index" type="number">
      <summary>Inbox item to report as spam</summary>
    </param>
  </function>
  <function name="Quit" type="function">
    <summary>Quits the game normally.</summary>
  </function>
  <function name="GetNumRaidMembers" type="function">
    <summary>Returns the number of members of the player's raid</summary>
    <return name="numRaidMembers" type="number">
      <summary>The number of members in the current raid, or 0.  This value will include the player, as a member of the raid</summary>
    </return>
  </function>
  <function name="CommentatorSetBattlemaster" type="function" />
  <function name="IsRightControlKeyDown" type="function">
    <summary>Returns whether or not the right Control key on the keyboard is held down</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if the right Control key on the keyboard is held down</summary>
    </return>
  </function>
  <function name="GetNumQuestLogChoices" type="function">
    <summary>Returns the number of reward choices for the currently selected quest in the quest log</summary>
    <return name="numChoices" type="number">
      <summary>The number of reward choices for the currently selected quest in the quest log</summary>
    </return>
  </function>
  <function name="SetCurrentTitle" type="function">
    <summary>Sets the players title.</summary>
    <param name="titleMaskID" type="number">
      <summary>Sets your players title to the given id.  titleMaskID should be between 1 and GetNumTitles() or -1 to clear.</summary>
    </param>
  </function>
  <function name="GetWeaponEnchantInfo" type="function">
    <summary>Returns information about temporary item enchants on the player's weapons </summary>
    <return name="hasMainHandEnchant" type="number" apitype="1nil">
      <summary>1 if the main hand weapon has a temporary enchant</summary>
    </return>
    <return name="mainHandExpiration" type="number">
      <summary>The time until the enchant expires, in milliseconds</summary>
    </return>
    <return name="mainHandCharges" type="number">
      <summary>The number of charges left on the enchantment</summary>
    </return>
    <return name="hasOffHandEnchant" type="number" apitype="1nil">
      <summary>1 if the offhand weapon has a temporary enchant</summary>
    </return>
    <return name="offHandExpiration" type="number">
      <summary>The time until the enchant expires, in milliseconds</summary>
    </return>
    <return name="offHandCharges" type="number">
      <summary>The number of charges left on the enchantment</summary>
    </return>
  </function>
  <function name="TaxiNodeCost" type="function">
    <summary>Returns the cost to fly to a given taxi node</summary>
    <param name="slot" type="number">
      <summary>The index of a taxi node</summary>
    </param>
    <return name="cost" type="number">
      <summary>The cost of flying to the given taxi node, in copper</summary>
    </return>
  </function>
  <function name="MoveViewLeftStart" type="function" />
  <function name="GetLocale" type="function">
    <summary>Returns the four character locale code indicating what language the client uses</summary>
    <return name="locale" type="string">
      <summary>A four character locale code indicating what language the client uses</summary>
    </return>
  </function>
  <function name="SignPetition" type="function">
    <summary>Signs the currently offered petition</summary>
  </function>
  <function name="ConsoleExec" type="function">
    <summary>Runs a console command</summary>
    <param name="console_command" type="string">
      <summary>The console command to run</summary>
    </param>
  </function>
  <function name="CombatLogGetCurrentEntry" type="function" />
  <function name="CanGuildRemove" type="function">
    <summary>Returns whether or not the player can remove a member from their guild</summary>
    <return name="canRemove" type="number" apitype="1nil">
      <summary>1 if the player can remove a member from their guild, otherwise nil</summary>
    </return>
  </function>
  <function name="DeleteCursorItem" type="function">
    <summary>Confirms deletion of the item currently held on the cursor</summary>
  </function>
  <function name="UnitHealth" type="function">
    <summary>Returns the amount of health the unit has.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="health" type="number">
      <summary>The amount of health the unit currently has.  If the unit is not a member of your party or raid, this value will be given as a percentage (i.e. between 0-100).</summary>
    </return>
  </function>
  <function name="GetPVPYesterdayStats" type="function">
    <summary>Returns the player's PVP stats from yesterday</summary>
    <return name="kills" type="number">
      <summary>The amount of honor kills the player earned yesterday</summary>
    </return>
    <return name="honor" type="number">
      <summary>The amount of honor points earned yesterday</summary>
    </return>
  </function>
  <function name="ItemHasRange" type="function">
    <summary>Returns whether or not the item has a range for use.</summary>
    <paramchoice>
      <param name="itemid" type="number">
        <summary>The item's id</summary>
      </param>
      <param name="itemname" type="string">
        <summary>The name of an item</summary>
      </param>
      <param name="itemlink" type="string">
        <summary>A valid item link</summary>
      </param>
    </paramchoice>
    <return name="hasRange" type="number" apitype="1nil">
      <summary>1 if the item has a range, otherwise nil.</summary>
    </return>
  </function>
  <function name="ItemTextGetPage" type="function">
    <summary>Returns the page number of the currently item text</summary>
    <return name="page" type="number">
      <summary>The page number of the currently viewed page of the item text</summary>
    </return>
  </function>
  <function name="FrameXML_Debug" type="function">
    <summary>Enables or disables verbose XML logging</summary>
    <param name="enable" type="number" apitype="1nil">
      <summary>1 if verbose XML logging should be enabled, otherwise nil</summary>
    </param>
  </function>
  <function name="GetMacroInfo" type="function">
    <summary>Returns name, texture and body of a given macro</summary>
    <param name="macroIndex" type="number">
      <summary>The macro index to query.  Macros 1-18 are the general macros, while 19-36 are character specific.</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the macro</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the macro's icon texture</summary>
    </return>
    <return name="body" type="string">
      <summary>The body of the macro</summary>
    </return>
    <return name="isLocal">
      <summary>Purpose unknown</summary>
    </return>
  </function>
  <function name="AcceptLevelGrant" type="function">
    <summary>Accepts a level that has been granted to you</summary>
  </function>
  <function name="GetCorpseRecoveryDelay" type="function">
    <summary>Returns the amount of time left until the player can recover their corpse</summary>
    <return name="timeLeft" type="number">
      <summary>The amount of time left until the player can recover their corpse, in seconds.  This returns 0 if the player can recover it immediately.</summary>
    </return>
  </function>
  <function name="GetCombatRating" type="function">
    <summary>Returns the amount of rating a player has for a given rating stat</summary>
    <param name="ratingIndex" type="number">
      <summary>The index of the rating to be queried</summary>
    </param>
    <return name="rating" type="number">
      <summary>The amount of rating bonus the player has</summary>
    </return>
  </function>
  <function name="GetPVPRankProgress" type="function" />
  <function name="IsInLFGQueue" type="function">
    <summary>Returns whether or not the player is currently in the LFG queue</summary>
    <return name="inQueue" type="number" apitype="1nil">
      <summary>1 if the player is currently in the LFG queue, otherwise nil</summary>
    </return>
  </function>
  <function name="HasFullControl" type="function">
    <summary>Returns whether or not the player has full control over their characters</summary>
    <return name="hasControl" type="number" apitype="1nil">
      <summary>1 if the player has full control over their characters (i.e. isn't feared, charmed, etc), otherwise nil</summary>
    </return>
  </function>
  <function name="CommentatorZoomOut" type="function" />
  <function name="MoveViewRightStop" type="function" />
  <function name="ClearFocus" type="function">
    <summary>Clears the player's focus unit</summary>
  </function>
  <function name="ExpandFactionHeader" type="function">
    <summary>Expands a given faction header</summary>
    <param name="index" type="number">
      <summary>The index of the faction header to collapse</summary>
    </param>
  </function>
  <function name="IsHarmfulItem" type="function">
    <summary>Returns whether or not an item is harmful (hostile to your target)</summary>
    <param name="itemName" type="string">
      <summary>The name of the item to query</summary>
    </param>
    <return name="isHarmful" type="number" apitype="1nil">
      <summary>1 if the item is harmful, otherwise nil</summary>
    </return>
  </function>
  <function name="ResetCPUUsage" type="function">
    <summary>Reset the current CPU usage statistics</summary>
  </function>
  <function name="BuyStableSlot" type="function">
    <summary>Purchases the next available stable slot, without confirmation</summary>
  </function>
  <function name="SetRaidSubgroup" type="function">
    <summary>Moves a raid member to a non-full raid subgroup</summary>
    <param name="index" type="number">
      <summary>The raid index of the player to move.  This can be obtained by mousing over the player in the raid frame, and running /run ChatFrame1:AddMessage(GetMouseFocus():GetID()).</summary>
    </param>
    <param name="subgroup" type="number">
      <summary>A non-full raid subgroup (1-8) where the player should be moved.</summary>
    </param>
  </function>
  <function name="GetCorpseMapPosition" type="function">
    <summary>Returns the position of the player's corpse on the world map.</summary>
    <return name="corpseX" type="number">
      <summary>The X coordinate for the player's corpse on the world map.  This number is given as a proportion of the total width of the WorldMapDetailFrame.</summary>
    </return>
    <return name="corpseY" type="number">
      <summary>The Y coordinate for the player's corpse on the world map.  This number is given as a proportion of the total height of the WorldMapDetailFrame.</summary>
    </return>
  </function>
  <function name="GetLFGTypeEntries" type="function">
    <summary>Returns the valid entries of a specific type in the LFG system</summary>
    <param name="type" type="number">
      <summary>The type of LFG request</summary>
    </param>
    <return name="entry" type="string">
      <summary>The name of the entry</summary>
    </return>
    <return name="token" type="string">
      <summary>A token sub-type for the entry.  For example the token for each entry of the "Zones" type returns the name of the continent the zone is on, while the tokens for dungeons returns a token representing the dungeon</summary>
    </return>
    <return name="...">
      <summary>A repeating list of entries and tokens</summary>
    </return>
  </function>
  <function name="GetAccountExpansionLevel" type="function">
    <summary>Returns the expansion level of the player's account</summary>
    <return name="expansionLevel" type="number">
      <summary>The expansion level of the player's account</summary>
    </return>
  </function>
  <function name="GetInstanceBootTimeRemaining" type="function">
    <summary>Returns the amount of time left until the player is removed from the current instance</summary>
    <return name="timeleft" type="number">
      <summary>The number of seconds until the player is booted from the current instance</summary>
    </return>
  </function>
  <function name="BuyGuildCharter" type="function">
    <summary>Purchases a guild charter with a given name</summary>
    <param name="guildName" type="string">
      <summary>The name of the guild</summary>
    </param>
  </function>
  <function name="CursorHasMacro" type="function">
    <summary>Returns whether or not the cursor currently holds a macro</summary>
    <return name="hasMacro" type="number" apitype="1nil">
      <summary>1 if the cursor currently holds a macro, otherwise nil</summary>
    </return>
  </function>
  <function name="GetPVPRankInfo" type="function">
    <summary>Returns information about a given PvP rank index</summary>
    <param name="index" type="number">
      <summary>The PvP index to query.  This index begins at 1, which maps to a negative PvP rank called "Pariah".  The inital PVP rank is found at index 5.</summary>
    </param>
    <param name="unit" type="string" apitype="unitid">
      <summary>A unit to use as the base faction for the PvP info.  The faction of the rank name (i.e. Legionnaire versus Knight-Captain for rank 8) is determined by the faction of this unit</summary>
    </param>
    <return name="rankName" type="string">
      <summary>The name of the PvP rank for the given faction</summary>
    </return>
    <return name="rankNumber" type="number">
      <summary>The numeric rank.  This will be different from the rank that was passed in as an argument.</summary>
    </return>
  </function>
  <function name="EnableAllAddOns" type="function">
    <summary>Enables all addons for the current character (takes effect at the next UI load)</summary>
  </function>
  <function name="GetQuestLogChoiceInfo" type="function">
    <summary>Returns information about an item available as a quest reward choice</summary>
    <param name="index" type="number">
      <summary>The index of a quest reward choice</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The texture of the item</summary>
    </return>
    <return name="numItems" type="number">
      <summary>The number of items in the stack</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality of the item</summary>
    </return>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the item is usable, otherwise nil</summary>
    </return>
  </function>
  <function name="GetGuildBankMoney" type="function">
    <summary>Returns the amount of money available in the guild bank, in copper</summary>
    <return name="guildBankMoney" type="number">
      <summary>The amount of money available in the guild bank, in copper</summary>
    </return>
  </function>
  <function name="GetFactionInfo" type="function">
    <summary>Returns information about a specified faction index</summary>
    <param name="index" type="number">
      <summary>The index of the faction in the Reputation window</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the faction</summary>
    </return>
    <return name="description" type="string">
      <summary>The description of the faction, displayed in the faction detail window</summary>
    </return>
    <return name="standingID" type="number">
      <summary>The current standing with the given faction</summary>
    </return>
    <return name="barMin" type="number">
      <summary>The minimum value of the reputation bar at the given standing</summary>
    </return>
    <return name="barMax" type="number">
      <summary>The maximum value of the reputation bar at the given standing</summary>
    </return>
    <return name="barValue" type="number">
      <summary>The player's current reputation with the faction</summary>
    </return>
    <return name="atWarWith" type="number" apitype="1nil">
      <summary>1 if the player is at war with the given faction, otherwise nil</summary>
    </return>
    <return name="canToggleAtWar" type="number" apitype="1nil">
      <summary>1 if the player can declare war with a given faction, otherwise nil</summary>
    </return>
    <return name="isHeader" type="number" apitype="1nil">
      <summary>1 if the given faction index is a faction header</summary>
    </return>
    <return name="isCollapsed" type="number" apitype="1nil">
      <summary>1 if the faction index is a faction header, and collapsed</summary>
    </return>
    <return name="isWatched" type="number" apitype="1nil">
      <summary>1 if the faction is currently being watched (i.e. displayed above the experience bar)</summary>
    </return>
  </function>
  <function name="GetCursorPosition" type="function">
    <summary>Returns the coordinate position of the cursor on screen.</summary>
    <return name="cursorX" type="number">
      <summary>The current scale-independent X coordinate of the cursor</summary>
    </return>
    <return name="cursorY" type="number">
      <summary>The current scale-independent Y coordinate of the cursor</summary>
    </return>
  </function>
  <function name="setglobal" type="function">
    <summary>Sets a global variable to a specified value</summary>
    <param name="name" type="string">
      <summary>The name of a global variable</summary>
    </param>
    <param name="value">
      <summary>The value to set in the given variable</summary>
    </param>
  </function>
  <function name="GetGuildTabardFileNames" type="function">
    <summary>Returns the filenames of the textures that comprise the player's guild tabard</summary>
    <return name="tabardBackgroundUpper" type="string">
      <summary>The path to the texture for the upper background of the guild tabard</summary>
    </return>
    <return name="tabardBackgroundLower" type="string">
      <summary>The path to the texture for the lower background of the guild tabard</summary>
    </return>
    <return name="tabardEmblemUpper" type="string">
      <summary>The path to the texture for the upper emblem of the guild tabard</summary>
    </return>
    <return name="tabardEmblemLower" type="string">
      <summary>The path to the texture for the lower emblem of the guild tabard</summary>
    </return>
    <return name="tabardBorderUpper" type="string">
      <summary>The path to the texture for the upper border of the guild tabard</summary>
    </return>
    <return name="tabardBorderLower" type="string">
      <summary>The path to the texture for the lower border of the guild tabard</summary>
    </return>
  </function>
  <function name="IsGuildLeader" type="function">
    <summary>Returns whether or not the current player is guild leader</summary>
    <return name="isLeader" type="number" apitype="1nil">
      <summary>1 if the player is a guild leader, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumPetitionNames" type="function">
    <summary>Returns the number of people who have signed the open petition</summary>
    <return name="numNames" type="number">
      <summary>The number of names that have currently signed the open petition</summary>
    </return>
  </function>
  <function name="CollapseSkillHeader" type="function">
    <summary>Collapses a skill header in the Skills window</summary>
    <param name="index" type="number">
      <summary>The index of the skill header to collapse.  If this value is a skill instead of a skill header, the enclosing header will be collapsed.</summary>
    </param>
  </function>
  <function name="GetBindingKey" type="function">
    <summary>Returns the key combinations for a given binding command</summary>
    <param name="COMMAND" type="string">
      <summary>The name of a binding command to query</summary>
    </param>
    <return name="key1" type="string">
      <summary>The primary key combination bound to this command</summary>
    </return>
    <return name="..." type="string">
      <summary>A list of the other key combinations bound to this command.  Although the default user interface only allows two combinations to be bound to a command, more than two can be set via the API.  This function returns all known combinations for the given command.</summary>
    </return>
  </function>
  <function name="SortAuctionItems" type="function">
    <summary>Sorts the auction house listing</summary>
    <param name="type" type="string">
      <summary>The type of auction listing to sort</summary>
    </param>
    <param name="sort" type="string">
      <summary>The column to use to sort the listing</summary>
    </param>
  </function>
  <function name="CommentatorGetMapInfo" type="function" />
  <function name="tinsert" type="function">
    <summary>This function is simply an alias for table.insert</summary>
  </function>
  <function name="GetFramerate" type="function">
    <summary>Returns the current graphical framerate</summary>
    <return name="framerate" type="number">
      <summary>The current graphical framerate</summary>
    </return>
  </function>
  <function name="time" type="function" />
  <function name="PickupMerchantItem" type="function">
    <summary>Picks up an item from the merchant window, holding it on the cursor</summary>
    <param name="slot" type="number">
      <summary>The merchant item slot</summary>
    </param>
  </function>
  <function name="IsRightAltKeyDown" type="function">
    <summary>Returns whether or not the right Alt key is currently held down</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if the right Alt key on the keyboard is currently held down</summary>
    </return>
  </function>
  <function name="IsMouseButtonDown" type="function">
    <summary>Returns whether or not the given mouse button is held down</summary>
    <param name="button" type="string">
      <summary>The mouse button to query</summary>
    </param>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if the mouse button is down, otherwise nil</summary>
    </return>
  </function>
  <function name="SetFactionActive" type="function">
    <summary>Sets a faction as the active faction</summary>
    <param name="index" type="number">
      <summary>The index the faction to set as active</summary>
    </param>
  </function>
  <function name="GetRewardSpell" type="function">
    <summary>Returns information about a spell quest reward</summary>
    <return name="texture" type="string">
      <summary>The path to the spell's icon texture</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the spell</summary>
    </return>
    <return name="isTradeskillSpell" type="number" apitype="1nil">
      <summary>1 if the spell is a tradeskill spell, otherwise nil</summary>
    </return>
    <return name="isSpellLearned" type="number" apitype="1nil">
      <summary>1 if the reward teaches the player a new spell</summary>
    </return>
  </function>
  <function name="GetTaxiBenchmarkMode" type="function">
    <summary>Returns whether or not taxi benchmark mode is enabled</summary>
    <return name="isBenchmark" type="number" apitype="1nil">
      <summary>1 if taxi benchmark mode is enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="GetSendMailMoney" type="function">
    <summary>Returns the amount of money that will be sent with your next mail message</summary>
    <return name="money" type="number">
      <summary>The amount of money (in copper) to be sent</summary>
    </return>
  </function>
  <function name="CreateMiniWorldMapArrowFrame" type="function" />
  <function name="GMSurveySubmit" type="function">
    <summary>Submits the current GM survey</summary>
  </function>
  <function name="IsConsumableSpell" type="function">
    <summary>Returns whether or not a spell requires a consumable reagent</summary>
    <param />
    <param name="bookType" type="string" optional="true">
      <summary>The spell book type to look up the slot index in (required when slot index is used)</summary>
    </param>
    <return name="isConsumable" type="number" apitype="1nil">
      <summary>1 if the spell requires a consumable reagent, nil otherwise</summary>
    </return>
  </function>
  <function name="strrev" type="function">
    <summary>This function is simply an alias for string.reverse</summary>
  </function>
  <function name="ChangeActionBarPage" type="function">
    <summary>Changes the current action bar page</summary>
    <param name="page" type="number">
      <summary>The action bar page to change to</summary>
    </param>
  </function>
  <function name="GetTradeSkillItemLink" type="function">
    <summary>Returns an item link for the given tradeskill item</summary>
    <param name="index" type="number">
      <summary>The index of a tradeskill item</summary>
    </param>
    <return name="link" type="string">
      <summary>The item link for the given item</summary>
    </return>
  </function>
  <function name="strrep" type="function">
    <summary>This function is simply an alias for string.rep</summary>
  </function>
  <function name="GetInboxItem" type="function">
    <summary>Returns information about an item attached to a received mail</summary>
    <param name="messageIndex" type="number">
      <summary>The index of the message to query</summary>
    </param>
    <param name="attachIndex" type="number">
      <summary>The attachment index of the message to query (1-16)</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="itemTexture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
    <return name="count" type="number">
      <summary>The number of items in the stack</summary>
    </return>
    <return name="quality" type="number">
      <summary>The item quality</summary>
    </return>
    <return name="canUse" type="number" apitype="1nil">
      <summary>1 if the item can be used by the player, otherwise nil</summary>
    </return>
  </function>
  <function name="strmatch" type="function">
    <summary>This function is simply an alias for string.match</summary>
  </function>
  <function name="strlen" type="function">
    <summary>This function is simply an alias for string.len</summary>
  </function>
  <function name="SetTaxiBenchmarkMode" type="function">
    <summary>Turns on flight path "benchmark" mode.</summary>
  </function>
  <function name="SortGuildRoster" type="function">
    <summary>Sorts the guild roster</summary>
    <param name="type" type="string">
      <summary>The type of criteria to sort by</summary>
    </param>
  </function>
  <function name="error" type="function" />
  <function name="GetXPExhaustion" type="function">
    <summary>Returns the amount of rested experience the player has earned</summary>
    <return name="exhaustionXP" type="number">
      <summary>The amount of rested experience the player currently has earned.  Each time the player gains experience from killing monsters, this value will decrease by the total amount of experience gained, not just the amount of rested experience bonus awarded.</summary>
    </return>
  </function>
  <function name="strjoin" type="function">
    <summary>Joins a list of strings together</summary>
    <param name="sep" type="string">
      <summary>The string to join between each two elements</summary>
    </param>
    <param name="..." type="string">
      <summary>A list of strings to be joined together</summary>
    </param>
    <return name="text" type="string">
      <summary>The list of strings joined together with the given seperator string</summary>
    </return>
  </function>
  <function name="strfind" type="function">
    <summary>This function is simply an alias for string.find</summary>
  </function>
  <function name="strbyte" type="function">
    <summary>This function is simply an alias for string.byte</summary>
  </function>
  <function name="UnitDefense" type="function">
    <summary>Returns the units defense statistics.</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="base" type="number">
      <summary>Base defense.</summary>
    </return>
    <return name="modifier" type="number">
      <summary>Defense modifier from gear and buffs.</summary>
    </return>
  </function>
  <function name="sqrt" type="function">
    <summary>This function is simply an alias for math.sqrt</summary>
  </function>
  <function name="IsMacClient" type="function">
    <summary>Returns whether or not the running client is a Mac</summary>
    <return name="isMac" type="number" apitype="1nil">
      <summary>1 if the client is a Mac client, otherwise nil</summary>
    </return>
  </function>
  <function name="SetSendMailShowing" type="function">
    <summary>Controls whether or not right-clicking an item attaches it to the mail to be sent</summary>
    <param name="enable" type="boolean">
      <summary>If true, enables right-click to attach items to the mail to be sent</summary>
    </param>
  </function>
  <function name="sort" type="function">
    <summary>This function is simply an alias for table.sort</summary>
  </function>
  <function name="GetQuestReward" type="function">
    <summary>Selects an offered quest reward without confirmation</summary>
    <param name="choice" type="number">
      <summary>The quest reward choice</summary>
    </param>
  </function>
  <function name="debugdump" type="function" />
  <function name="GetAuctionSellItemInfo" type="function">
    <summary>Returns information about the item being placed on auction</summary>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the icon texture for the item</summary>
    </return>
    <return name="count" type="number">
      <summary>The number of items in the stack</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality level of the item</summary>
    </return>
    <return name="canUse" type="number" apitype="1nil">
      <summary>1 if the item can be used by the player, otherwise nil</summary>
    </return>
    <return name="price" type="number">
      <summary>How much the item would sell for to a vendor</summary>
    </return>
  </function>
  <function name="CombatLogGetRetentionTime" type="function">
    <summary>Returns the amount of time combat log entries are stored</summary>
  </function>
  <function name="CloseBankFrame" type="function">
    <summary>Closes the bank frame</summary>
  </function>
  <function name="GetInventoryItemTexture" type="function">
    <summary>Returns the item texture for a specific inventory item</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query.  This is normally "player" but can also work on the unit you are currently inspecting.</summary>
    </param>
    <param name="slot" type="number">
      <summary>The inventory slot to query</summary>
    </param>
    <return name="texture" type="string">
      <summary>The path to the inventory item's icon texture</summary>
    </return>
  </function>
  <function name="IsControlKeyDown" type="function">
    <summary>Returns whether or not a Control key on the keyboard is held down</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if a Control key on the keyboard is currently held down</summary>
    </return>
  </function>
  <function name="LoadBindings" type="function">
    <summary>Loads a set of keybindings</summary>
    <param name="set" type="number">
      <summary>Which set of keybindings should be loaded</summary>
    </param>
  </function>
  <function name="GetStablePetFoodTypes" type="function">
    <summary>Returns the types of food that a stabled pet will eat</summary>
    <param name="index" type="number">
      <summary>The index of a stabled pet, or 0 for the active pet.</summary>
    </param>
    <return name="..." type="string">
      <summary>A list of strings, each containing a food that the stabled pet will eat</summary>
    </return>
  </function>
  <function name="GetRewardTitle" type="function">
    <summary>Returns the title you will be rewarded for completing the quest currently displayed in by an NPC</summary>
  </function>
  <function name="ItemTextNextPage" type="function">
    <summary>Asks the game to move the currently open book, or other readable object to the next page of text.</summary>
  </function>
  <function name="IsFishingLoot" type="function">
    <summary>Returns whether or not the currently displayed loot is fishing loot</summary>
    <return name="isFishing" type="number" apitype="1nil">
      <summary>1 if the currently displayed loot is fishing loot, otherwise nil</summary>
    </return>
  </function>
  <function name="GetBuybackItemInfo" type="function">
    <summary>Returns information about an item in the merchant buyback window</summary>
    <param name="slot" type="number">
      <summary>The slot in the merchant buyback window</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
    <return name="price" type="number">
      <summary>The price of the item, in copper</summary>
    </return>
    <return name="quantity" type="number">
      <summary>The number of items per stack</summary>
    </return>
    <return name="numAvailable" type="number">
      <summary>The number of items available for purchase</summary>
    </return>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the item is usable, otherwise nil</summary>
    </return>
  </function>
  <function name="min" type="function">
    <summary>This function is simply an alias for math.min</summary>
  </function>
  <function name="GetCVarInfo" type="function">
    <summary>Returns information about the named CVar</summary>
    <param name="cvar" type="string">
      <summary>The name of the CVar to query</summary>
    </param>
    <return name="value" type="string">
      <summary>The current value of the CVar</summary>
    </return>
    <return name="defaultValue" type="string">
      <summary>The default value of the CVar</summary>
    </return>
    <return name="serverStoredAccountWide" type="number" apitype="1nil">
      <summary>1 if the CVar is stored on the server, per account</summary>
    </return>
    <return name="serverStoredPerCharacter" type="number" apitype="1nil">
      <summary>1 if the CVar is stored on the server, per character</summary>
    </return>
  </function>
  <function name="GetWaterDetail" type="function">
    <summary>Returns the current value of the water detail option</summary>
    <return name="value" type="number">
      <summary>The current value of the water detail option</summary>
    </return>
  </function>
  <function name="GetSummonConfirmAreaName" type="function">
    <summary>Returns the destination area of the pending summon spell</summary>
    <return name="area" type="string">
      <summary>The destination area of the pending summon spell</summary>
    </return>
  </function>
  <function name="HasNewMail" type="function">
    <summary>Returns whether or not the player has new mail</summary>
    <return name="hasMail" type="number" apitype="1nil">
      <summary>1 if the player has new mail, otherwise nil</summary>
    </return>
  </function>
  <function name="log" type="function">
    <summary>This function is simply an alias for math.log</summary>
  </function>
  <function name="AutoEquipCursorItem" type="function">
    <summary>Tries to equip the item currently held on the cursor</summary>
  </function>
  <function name="issecurevariable" type="function">
    <summary>Returns whether or not a variable is secure and if not, what addon tainted the variable</summary>
    <param name="table" type="table" optional="true">
      <summary>A table to be used when checking table elements</summary>
    </param>
    <param name="variable" type="string">
      <summary>The name of a variable to check.  In order to check the status of a table element, you should specify the table, and then the key of the element</summary>
    </param>
    <return name="issecure" type="number" apitype="1nil">
      <summary>1 if the variable is secure, otherwise nil</summary>
    </return>
    <return name="taint" type="string">
      <summary>The name of the addon that tainted the variable</summary>
    </return>
  </function>
  <function name="GetQuestText" type="function">
    <summary>Returns the text for the currently displayed quest</summary>
    <return name="text" type="string">
      <summary>The text for the currently displayed quest</summary>
    </return>
  </function>
  <function name="SetLootThreshold" type="function">
    <summary>Sets the loot threshold to a specific item quality</summary>
    <param name="quality" type="number">
      <summary>The minimum item quality to use for the loot method.  This is set to 2 - Uncommon items by default.</summary>
    </param>
  </function>
  <function name="GetPetHappiness" type="function">
    <summary>Returns information about the player's pet's happiness</summary>
    <return name="happiness" type="number">
      <summary>The happiness level of the pet</summary>
    </return>
    <return name="damagePercentage" type="number">
      <summary>The percentage multipler for the pet's damage.  This is affected by the pet's happiness</summary>
    </return>
    <return name="loyaltyRate" type="number">
      <summary>The current rate of loyalty gain or loss.  Positive values indicate that the pet is gaining loyalty, while negative values indicate the pet is losing loyalty</summary>
    </return>
  </function>
  <function name="GetGreetingText" type="function">
    <summary>Returns the greeting text displayed for quest NPCs with multiple quests</summary>
    <return name="greetingText" type="string">
      <summary>The greeting text displayed for quest NPCs</summary>
    </return>
  </function>
  <function name="CommentatorFollowPlayer" type="function" />
  <function name="RenamePetition" type="function">
    <summary>Renames the open petition</summary>
    <param name="name" type="string">
      <summary>The new name for the petition</summary>
    </param>
  </function>
  <function name="SetWaterDetail" type="function">
    <summary>Sets the value for the water details display</summary>
    <param name="value" type="number">
      <summary>The new value for the water detail</summary>
    </param>
  </function>
  <function name="hooksecurefunc" type="function">
    <summary>Add a function to be called after the original secure function.</summary>
    <param name="table" type="table" optional="true">
      <summary>A table object that contains the function to be hooked</summary>
    </param>
    <param name="function" type="string">
      <summary>The name of the function to be hooked</summary>
    </param>
    <param name="hookfunc" type="function">
      <summary>The function to be called each time the original function is called</summary>
    </param>
  </function>
  <function name="gsub" type="function">
    <summary>This function is simply an alias for string.gsub</summary>
  </function>
  <function name="gmatch" type="function">
    <summary>This function is simply an alias for string.gmatch</summary>
  </function>
  <function name="getn" type="function">
    <summary>This function is simply an alias for table.getn</summary>
  </function>
  <function name="getglobal" type="function">
    <summary>Returns a global variable with a given name</summary>
    <param name="str" type="string">
      <summary>The name of a global variable to get</summary>
    </param>
    <return name="var">
      <summary>The global variable with the given name</summary>
    </return>
  </function>
  <function name="geterrorhandler" type="function">
    <summary>Returns a reference to the current error handler.</summary>
    <return name="handler" type="function">
      <summary>The current error handler</summary>
    </return>
  </function>
  <function name="CreateFont" type="function">
    <summary>Creates a new font object</summary>
    <param name="name" type="string">
      <summary>The name of the font object to create</summary>
    </param>
    <return name="fontObject" type="table">
      <summary>The newly created font object</summary>
    </return>
  </function>
  <function name="frexp" type="function">
    <summary>This function is simply an alias for math.frexp</summary>
  </function>
  <function name="UnitPlayerOrPetInRaid" type="function">
    <summary>Returns whether or not a given unitid is a member of the player's raid</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
  </function>
  <function name="PartialPlayTime" type="function">
    <summary>Returns whether the character gains partial xp or not.</summary>
    <return name="partialPlayTime" type="number" apitype="1nil">
      <summary>1 if the character gains only partial xp, nil if not.</summary>
    </return>
  </function>
  <function name="foreachi" type="function">
    <summary>Iterates over a numerically-indexed table, calling func(index, value) for each entry</summary>
  </function>
  <function name="foreach" type="function">
    <summary>Iterates over a table calling func(index, value) for each entry</summary>
  </function>
  <function name="IsPetAttackActive" type="function">
    <summary>Returns whether or not the pet's attack action is currently active</summary>
    <param name="index" type="number">
      <summary>The index of the pet's attack action</summary>
    </param>
    <return name="isActive" type="number" apitype="1nil">
      <summary>1 if the pet's attack action is currently active, otherwise nil</summary>
    </return>
  </function>
  <function name="floor" type="function">
    <summary>This is simply an alias for math.floor</summary>
  </function>
  <function name="difftime" type="function" />
  <function name="CancelPendingEquip" type="function">
    <summary>Cancels a pending equip action</summary>
  </function>
  <function name="debugstack" type="function">
    <summary>Returns information about the current function call stack</summary>
    <param name="start" type="number">
      <summary>The stack level to start the traceback at.  0 is the debugstack() function itself, while 1 is the function that called debugstack.</summary>
    </param>
    <param name="countTop" type="number">
      <summary>The maximum number of functions to output at the top of the stack trace</summary>
    </param>
    <param name="countBot" type="number">
      <summary>The maximum number of functions to output at the bottom of the stack trace,</summary>
    </param>
    <return name="debugstring" type="string">
      <summary>The stack traceback as a multi-line string</summary>
    </return>
  </function>
  <function name="Logout" type="function">
    <summary>Logs out of the current character, taking your back to the character selection screen</summary>
  </function>
  <function name="debugprofilestop" type="function">
    <summary>Returns the value of the running debug profile timer</summary>
    <return name="time" type="number">
      <summary>The current value of the debug profile timer in milliseconds (with sub millisecond precision)</summary>
    </return>
  </function>
  <function name="GetQuestIndexForTimer" type="function">
    <summary>Returns the questlog quest index for the given timer in the QuestTimer frame.</summary>
    <param name="index" type="number">
      <summary>Timer index to query</summary>
    </param>
    <return name="questIndex" type="number">
      <summary>QuestLog quest index</summary>
    </return>
  </function>
  <function name="SetLootPortrait" type="function">
    <summary>Sets a texture to the current loot portrait</summary>
    <param name="texture" type="table">
      <summary>The portrait texture to set</summary>
    </param>
  </function>
  <function name="debugprint" type="function" />
  <function name="ShowHelm" type="function">
    <summary>Enables or disables the display of the players helm</summary>
    <param name="show" type="number" apitype="1nil">
      <summary>1 to enable helm display, otherwise nil</summary>
    </param>
  </function>
  <function name="debugload" type="function" />
  <function name="debuginfo" type="function" />
  <function name="securecall" type="function" />
  <function name="UnitAura" type="function" />
  <function name="GetTrainerServiceIcon" type="function">
    <summary>Returns the icon for a given trainer service (spell or skill)</summary>
    <param name="index" type="number">
      <summary>The index of a service in the trainer window</summary>
    </param>
    <return name="icon" type="string">
      <summary>The path to the service's icon texture</summary>
    </return>
  </function>
  <function name="CreateFrame" type="function">
    <summary>Creates a new frame object dynamically</summary>
    <param name="frameType" type="string">
      <summary>The type of the frame to create.</summary>
    </param>
    <param name="name" type="string" optional="true">
      <summary>The name of the new frame. If given, will also create an entry in the global namespace for the created frame under the specified name.</summary>
    </param>
    <param name="parent" type="table" optional="true">
      <summary>A reference to the parent of the new frame.</summary>
    </param>
    <param name="template" type="string" optional="true">
      <summary>The name of the template to be used for creating the new frame, or a comma separated list of templates to be used</summary>
    </param>
    <return name="frame" type="table">
      <summary>A reference to the newly created frame.</summary>
    </return>
  </function>
  <function name="GetAuctionItemLink" type="function">
    <summary>Returns an item link for a given auction item</summary>
    <param name="type" type="string">
      <summary>The type of auction house listing to query</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the item in the listing</summary>
    </param>
    <return name="link" type="string">
      <summary>An item link for the given item</summary>
    </return>
  </function>
  <function name="ArenaTeamLeave" type="function">
    <summary>Leaves an arena team</summary>
    <param name="team" type="number">
      <summary>The index of the team to leave.</summary>
    </param>
  </function>
  <function name="GetRestState" type="function">
    <summary>Returns the player's current rest state</summary>
    <return name="state" type="number">
      <summary>The player's current rest state</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the player's current rest state</summary>
    </return>
    <return name="multiplier" type="number">
      <summary>The experience multiplier currently active for the player</summary>
    </return>
  </function>
  <function name="ceil" type="function">
    <summary>This function is simply an alias for math.ceil</summary>
    <param name="value" type="number">
      <summary>The input value</summary>
    </param>
    <return name="ceiling" type="number">
      <summary>The ceiling of the given number</summary>
    </return>
  </function>
  <function name="GetMuteName" type="function">
    <summary>Gets name of a character on the player's mute list</summary>
    <param name="index" type="number">
      <summary>The index of an entry in the mute listing</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player being voice muted</summary>
    </return>
  </function>
  <function name="abs" type="function">
    <summary>This function is simply an alias for math.abs.</summary>
    <param name="value" type="number">
      <summary>The input value</summary>
    </param>
    <return name="absoluteValue" type="number">
      <summary>The absolute value of the given number</summary>
    </return>
  </function>
  <function name="VoiceSelectCaptureDevice" type="function">
    <summary>Selects a voice capture device</summary>
    <param name="deviceName" type="string">
      <summary>The name of a voice capture device.  This can be obtained using VoiceEnumerateCaptureDevices().</summary>
    </param>
  </function>
  <function name="VoicePushToTalkStop" type="function">
    <summary>Used internally to stop talking, when push-to-talk is active in voice chat</summary>
  </function>
  <function name="GetSpellCount" type="function">
    <summary>Returns the number of times a spell with a reagent can be cast</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>The name of a spell to query</summary>
      </param>
      <param name="spellId" type="number">
        <summary>A spellId to query</summary>
      </param>
    </paramchoice>
    <return name="numCasts" type="number">
      <summary>The number of spellcasts that can be made with the current number of reagents</summary>
    </return>
  </function>
  <function name="VoiceIsDisabledByClient" type="function">
    <summary>Returns whether or not the voice chat system is disabled due to hardware reasons</summary>
    <return name="isDisabled" type="number" apitype="1nil">
      <summary>1 if the voice system is disabled, otherwise nil</summary>
    </return>
  </function>
  <function name="VoiceGetCurrentOutputDevice" type="function">
    <summary>Returns the index of the current voice output device</summary>
    <return name="index" type="number">
      <summary>The index of the current voice output device</summary>
    </return>
  </function>
  <function name="ShowingHelm" type="function">
    <summary>Returns whether or not the helm is currently being shown</summary>
    <return name="isShowing" type="number" apitype="1nil">
      <summary>1 if the helm is being shown, otherwise nil</summary>
    </return>
  </function>
  <function name="AcceptGuild" type="function">
    <summary>Accept an invitation to join a guild</summary>
  </function>
  <function name="IsActiveQuestTrivial" type="function">
    <summary>Returns whether or not an active quest in the QuestFrame is considered trivial</summary>
    <param name="index" type="number">
      <summary>The index of an active quest in the QuestFrame</summary>
    </param>
    <return name="isTrivial" type="number" apitype="1nil">
      <summary>1 if the quest is considered trivial</summary>
    </return>
  </function>
  <function name="HasAction" type="function">
    <summary>Returns a flag if an action slot is occupied.</summary>
    <param name="slot" type="number">
      <summary>Action slot number</summary>
    </param>
    <return name="hasAction" type="boolean">
      <summary>Returns 1 if the slot contains an action, else nil</summary>
    </return>
  </function>
  <function name="GetStationeryInfo" type="function">
    <summary>Returns information about a given stationery</summary>
    <param name="index" type="number">
      <summary>A stationery index</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the stationery</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the stationery texture</summary>
    </return>
    <return name="cost" type="number">
      <summary>The cost of the stationery, in copper</summary>
    </return>
  </function>
  <function name="KBSetup_GetLanguageCount" type="function">
    <summary>Returns the number of available knowledge base languages</summary>
    <return name="numLanguages" type="number">
      <summary>The number of available knowledge base languages</summary>
    </return>
  </function>
  <function name="KBSystem_GetServerNotice" type="function">
    <summary>Returns the text of the knowledgebase server system notice</summary>
    <return name="text" type="string">
      <summary>The text of the knowledgebase system server notice</summary>
    </return>
  </function>
  <function name="GetRepairAllCost" type="function">
    <summary>Returns the cost to repair all damaged items</summary>
    <return name="repairAllCost" type="number">
      <summary>The cost to repair all items, in copper.  If the player doesn't need to repair any items, this returns 0.</summary>
    </return>
    <return name="canRepair" type="number" apitype="1nil">
      <summary>1 if the player needs to, and can repair.  This return is used to enable/disable the repair all button in the merchant frame.</summary>
    </return>
  </function>
  <function name="GetTradeSkillTools" type="function">
    <summary>Returns the required tradeskill tools for a given tradeskill recipe</summary>
    <param name="index" type="number">
      <summary>The index of a tradeskill recipe in the tradeskill UI</summary>
    </param>
    <return name="toolName" type="string">
      <summary>The name of the tool required for the given tradeskill</summary>
    </return>
    <return name="hasTool" type="number" apitype="1nil">
      <summary>1 if the player currently has the required tool, otherwise nil.  This value may not be accurate for all requires tools, such as the Mana Loom required for creating Imbued Netherweave Cloth.  This function only seems to work for tools that are inventory items.</summary>
    </return>
    <return name="...">
      <summary>Multiple returns are used when there are multiple required tools</summary>
    </return>
  </function>
  <function name="GetBattlefieldEstimatedWaitTime" type="function">
    <summary>Returns the estimated wait time on a battleground or arena queue</summary>
    <param name="index" type="number">
      <summary>The index of the battleground or arena as listed in the tooltip for the minimap battle status icon</summary>
    </param>
    <return name="waitTime" type="number">
      <summary>The estimated wait time in milliseconds.</summary>
    </return>
  </function>
  <function name="GetInboxText" type="function">
    <summary>Returns information about the text of an inbox message</summary>
    <param name="index" type="number">
      <summary>The index of a mail item in the inbox</summary>
    </param>
    <return name="bodyText" type="string">
      <summary>The text of the mail message</summary>
    </return>
    <return name="texture" type="string">
      <summary>The stationery texture to be displayed</summary>
    </return>
    <return name="isTakeable" type="number" apitype="1nil">
      <summary>1 if the text of the message can be taken from the message, otherwise nil</summary>
    </return>
    <return name="isInvoice" type="number" apitype="1nil">
      <summary>1 if the inbox message is an auction house invoice, otherwise nil</summary>
    </return>
  </function>
  <function name="VoiceEnumerateCaptureDevices" type="function">
    <summary>Returns the name of a voice capture device</summary>
    <param name="deviceIndex" type="number">
      <summary>The index of the capture device</summary>
    </param>
    <return name="deviceName" type="string">
      <summary>The name of the voice capture device</summary>
    </return>
  </function>
  <function name="IsSpellInRange" type="function">
    <summary>Returns whether or not a spell is in range of a given unit</summary>
    <param name="spell" type="string">
      <summary>The name of a spell to query</summary>
    </param>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="inRange" type="number" apitype="1nil">
      <summary>1 if the spell is in range of the given unit, otherwise nil</summary>
    </return>
  </function>
  <function name="IsRealRaidLeader" type="function">
    <summary>Returns whether or not the player is the leader of their non-battleground raid party</summary>
    <return name="isLeader" type="number" apitype="1nil">
      <summary>1 if the player is the leader of the "real" raid.  When in arena/battlegrounds the player is still a member of whatever party or raid they belonged to prior to beginning the match.</summary>
    </return>
  </function>
  <function name="GetNumDisplayChannels" type="function">
    <summary>Returns the number of channels in the channel display</summary>
    <return name="channelCount" type="number">
      <summary>The number of channels (including headers) displayed in the chat tab channel display</summary>
    </return>
  </function>
  <function name="VoiceChat_StopCapture" type="function" />
  <function name="VoiceChat_StartCapture" type="function" />
  <function name="IsCurrentAction" type="function">
    <summary>Returns whether or not a specific action is currently being cast, or awaiting targeting </summary>
    <param name="slot" type="number">
      <summary>An actionbar slot</summary>
    </param>
    <return name="isCurrent" type="number" apitype="1nil">
      <summary>1 if the given action is currently being cast or is the action currently awaiting targeting, otherwise nil</summary>
    </return>
  </function>
  <function name="VoiceChat_RecordLoopbackSound" type="function">
    <summary>Records a short voice recording for testing purposes.</summary>
    <param name="seconds" type="number">
      <summary>The amount of time to record (in seconds)</summary>
    </param>
  </function>
  <function name="GetPetIcon" type="function">
    <summary>Returns the icon the player's pet would have if stabled</summary>
    <return name="icon" type="string">
      <summary>The path to the pet's icon texture, or nil</summary>
    </return>
  </function>
  <function name="GetCritChance" type="function">
    <summary>Returns the player's percent melee critical strike chance</summary>
    <return name="critChance" type="number">
      <summary>The player's percent chance to crit for melee attacks.</summary>
    </return>
  </function>
  <function name="SetSelectedSkill" type="function">
    <summary>Sets the currently selected skill in the skills window.</summary>
    <param name="index" type="number">
      <summary>The index of a skill in the skill window, including skill headers</summary>
    </param>
  </function>
  <function name="ArenaTeamDisband" type="function">
    <summary>Disbands an arena team</summary>
    <param name="team" type="number">
      <summary>The index of the arena team to disband.  These indices begin at 1, with 1 always being the smallest team the player is a part of.  For example, if the player is only a member of a 3v3 and 5v5 team then the index 1 will be the 3v3 team, and the index 2 will be the 5v5 team.</summary>
    </param>
  </function>
  <function name="MoveForwardStop" type="function" />
  <function name="VoiceChat_GetCurrentMicrophoneSignalLevel" type="function">
    <summary>Returns the current volume level of the microphone signal</summary>
    <return name="volume" type="number">
      <summary>The current volume level of the microphone signal</summary>
    </return>
  </function>
  <function name="UseInventoryItem" type="function">
    <summary>Uses an item from the player's inventory</summary>
    <param name="slot" type="number">
      <summary>An inventory slot id</summary>
    </param>
  </function>
  <function name="UseContainerItem" type="function">
    <summary>Use an item from one of your containers, optionally on a target</summary>
    <param name="index" type="number">
      <summary>The container that contains the item</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot that contains the item</summary>
    </param>
    <param name="target" type="string" optional="true">
      <summary>The target that the item should be used on</summary>
    </param>
  </function>
  <function name="SetLFMType" type="function">
    <summary>Sets the type of the current LFM request</summary>
    <param name="id" type="number">
      <summary>The type of LFM request to query</summary>
    </param>
  </function>
  <function name="UseAction" type="function" />
  <function name="GetNumQuestLogEntries" type="function">
    <summary>Returns the number of quest log entries</summary>
    <return name="numEntries" type="number">
      <summary>The number of quest log entries</summary>
    </return>
  </function>
  <function name="Dismount" type="function">
    <summary>Dismounts the player</summary>
  </function>
  <function name="GetCursorMoney" type="function">
    <summary>Returns the amount of money currently held by the cursor, in copper</summary>
    <return name="cursorMoney" type="number">
      <summary>The amount of money currently held by the cursor, in copper</summary>
    </return>
  </function>
  <function name="GetSuggestedGroupNum" type="function">
    <summary>Returns the size of the suggested group for the currently displayed quest</summary>
    <return name="suggestedGroup" type="number">
      <summary>The size of a suggested group for the currently displayed quest, or 0</summary>
    </return>
  </function>
  <function name="UpdateSpells" type="function">
    <summary>Updates the spells in the players spellbook.</summary>
  </function>
  <function name="GetMouseButtonName" type="function">
    <summary>Converts a mouse button number to a mouse button name</summary>
    <param name="buttonNumber" type="number">
      <summary>A mouse button number (1-5)</summary>
    </param>
    <return name="buttonName" type="string">
      <summary>The name of the given mouse button</summary>
    </return>
  </function>
  <function name="SetLFGAutojoin" type="function">
    <summary>Enables auto-join in the LFG system</summary>
  </function>
  <function name="UpdateGMTicket" type="function">
    <summary>Updates the current GM Ticket with the appropriate text</summary>
    <param name="type" type="string">
      <summary>Specific GM Ticket Type from the available list</summary>
    </param>
    <param name="text" type="string">
      <summary>Updated GM Ticket text</summary>
    </param>
  </function>
  <function name="IsEquippableItem" type="function">
    <summary>Returns whether or not a given item is equippable</summary>
    <return name="isEquippable" type="number" apitype="1nil">
      <summary>1 if the item is equippable, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumTalentTabs" type="function">
    <summary>Returns the number of talent tabs for the player, or a the currently inspected unit</summary>
    <param name="inspect" type="boolean">
      <summary>true to query the currently inspected unit, false to query talent info for the player</summary>
    </param>
    <return name="numTabs" type="number">
      <summary>The number of talent tabs</summary>
    </return>
  </function>
  <function name="CommentatorSetMoveSpeed" type="function" />
  <function name="DescendStop" type="function">
    <summary>Called when the player releases the sit/descend key (while swimming or flying)</summary>
  </function>
  <function name="GetWhoInfo" type="function">
    <summary>Returns information about a specific index of a who requests's results</summary>
    <param name="index" type="number">
      <summary>The index of an entry in the who list</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player</summary>
    </return>
    <return name="guild" type="string">
      <summary>The player's guild name</summary>
    </return>
    <return name="level" type="number">
      <summary>The player's level</summary>
    </return>
    <return name="race" type="string">
      <summary>The localized name of the player's race</summary>
    </return>
    <return name="class" type="string">
      <summary>The localized name of the player's class</summary>
    </return>
    <return name="zone" type="string">
      <summary>The player's current zone</summary>
    </return>
    <return name="filename" type="string">
      <summary>The english uppercase name of the player's class</summary>
    </return>
  </function>
  <function name="MoveBackwardStart" type="function" />
  <function name="LootSlotIsCoin" type="function">
    <summary>Returns whether or not a given loot slot contains coins</summary>
    <param name="slot" type="number">
      <summary>The loot slot index to query</summary>
    </param>
    <return name="isCoin" type="number" apitype="1nil">
      <summary>1 if the loot slot contains coins, otherwise nil</summary>
    </return>
  </function>
  <function name="UnitPowerType" type="function">
    <summary>Returns the power type (energy, mana, rage) of the given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="powerType" type="number">
      <summary>A number indicating what power type the unit has</summary>
    </return>
  </function>
  <function name="UnitXP" type="function">
    <summary>Returns the amount of experience that the unit currently has</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query.</summary>
    </param>
    <param name="name" type="string">
      <summary>The full name of the character to query</summary>
    </param>
    <return name="currXP" type="number">
      <summary>The amount of experience the unit currently has</summary>
    </return>
  </function>
  <function name="IsDisplayChannelModerator" type="function">
    <summary>Returns whether or not the player is a moderator of the currently selected display channel in the Chat tab</summary>
    <return name="isModerator" type="number" apitype="1nil">
      <summary>1 if the player is a moderator of the currently selected display channel, nil otherwise</summary>
    </return>
  </function>
  <function name="GetModifiedClickAction" type="function">
    <summary>Returns the token/name for a modified click action</summary>
    <param name="index" type="number">
      <summary>The index of a modified click action.  Valid indices seem to be between 1 and GetNumModifiedClickActions(), with not every single index returning an action</summary>
    </param>
    <return name="action" type="string">
      <summary>The name/token for the given action</summary>
    </return>
  </function>
  <function name="CursorCanGoInSlot" type="function">
    <summary>Returns whether or not the item on the cursor can be placed in the given slot</summary>
    <param name="slot" type="number">
      <summary>The slot number on the PaperDollFrame</summary>
    </param>
    <return name="canBePlaced" type="number" apitype="1nil">
      <summary>1 if the item on the cursor can be placed in the given inventory slot, otherwise nil</summary>
    </return>
  </function>
  <function name="UnitSex" type="function">
    <summary>Returns the gender of the given unit or player</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitId to query</summary>
    </param>
    <param name="name" type="string">
      <summary>The name of a player to query.</summary>
    </param>
    <return name="gender" type="number">
      <summary>The gender of the unit or player</summary>
    </return>
  </function>
  <function name="AddQuestWatch" type="function">
    <summary>Adds a quest to the quest tracker</summary>
    <param name="questIndex" type="number">
      <summary>The index of a quest in the quest log</summary>
    </param>
  </function>
  <function name="StrafeRightStart" type="function">
    <summary>Begins strafing to the right.</summary>
  </function>
  <function name="TargetLastTarget" type="function">
    <summary>Targets the last targeted unit</summary>
  </function>
  <function name="GetQuestIndexForWatch" type="function">
    <summary>Returns the index in the quest log of a currently watched quest</summary>
    <param name="index" type="number">
      <summary>The index of a quest in the "watched" quest list</summary>
    </param>
    <return name="questIndex" type="number">
      <summary>The index of the watched quest in the quest log</summary>
    </return>
  </function>
  <function name="GetSpellPenetration" type="function">
    <summary>Returns the amount of spell penetration the player currently has</summary>
    <return name="penetration" type="number">
      <summary>The amount of spell penetration rating the player currently has</summary>
    </return>
  </function>
  <function name="SetView" type="function">
    <summary>Sets the camera view to one of the pre-set views</summary>
    <param name="index" type="number">
      <summary>Sets the camera view to one of the pre-set views.  These views can have been previously saved with the SaveView() function, otherwise the game's default views are used.</summary>
    </param>
  </function>
  <function name="GetTrainerGreetingText" type="function">
    <summary>Returns the greeting text for the currently (or last) open trainer</summary>
    <return name="text" type="string">
      <summary>The greeting text for the currently (or last) open trainer.  This is the text displayed at the top of the trainer window.</summary>
    </return>
  </function>
  <function name="AcceptSkillUps" type="function" />
  <function name="UnitMana" type="function">
    <summary>Returns the current mana points of the given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit of interest</summary>
    </param>
    <return name="mana" type="string" apitype="unitid">
      <summary>The unit's current mana points</summary>
    </return>
  </function>
  <function name="GuildRosterSetOfficerNote" type="function">
    <summary>Sets an officer note for a guild member</summary>
    <param name="index" type="number">
      <summary>The index of a guild member in the guild UI</summary>
    </param>
    <param name="note" type="string">
      <summary>The note to set for the given guild member</summary>
    </param>
  </function>
  <function name="UnitManaMax" type="function">
    <summary>Returns the maximum mana or other power that a given unit can have</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player, the player's pet, or a member of the player's party or raid</summary>
      </param>
    </paramchoice>
    <return name="maxValue" type="number">
      <summary>The maximum amount of mana (or other power) the unit can have.  If the unit is not a member of the player's party or raid this function will always return 100 (since it operates in percentage values).  This function is used for Mana, Energy, Focus and Rage.</summary>
    </return>
  </function>
  <function name="GetTrainerServiceStepReq" type="function" />
  <function name="UnitRangedAttackPower" type="function">
    <summary>Returns a unit's ranged attack power and bonuses</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query.  Only "player" and "pet" or their equivalents are valid</summary>
    </param>
    <return name="base" type="number">
      <summary>Base ranged attack power</summary>
    </return>
    <return name="posBuff" type="number">
      <summary>Positive buffs to ranged attack power</summary>
    </return>
    <return name="negBuff" type="number">
      <summary>Negative buffs to ranged attack power</summary>
    </return>
  </function>
  <function name="StrafeLeftStart" type="function">
    <summary>Makes the character start strafing left.</summary>
  </function>
  <function name="format" type="function">
    <summary>This is simply an alias for string.format</summary>
  </function>
  <function name="UnitPlayerOrPetInParty" type="function">
    <summary>This function will tell you if the unit in question is in your party.</summary>
    <param />
    <return name="inParty" type="number" apitype="1nil">
      <summary>1 if the unit, player or pet is in the party, otherwise nil.</summary>
    </return>
  </function>
  <function name="UnitPlayerControlled" type="function">
    <summary>Returns whether or not the given unit is a player controlled character</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="isPlayer" type="number" apitype="1nil">
      <summary>1 if the unit is a player controlled character, otherwise nil</summary>
    </return>
  </function>
  <function name="UnitIsVisible" type="function">
    <summary>Returns whether or not the given unit is visible (in the player's area of interest)</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="isVisible" type="number" apitype="1nil">
      <summary>1 if the unit is visible, otherwise nil</summary>
    </return>
  </function>
  <function name="UnitPVPName" type="function">
    <summary>Returns the name of the unit with the selected PVP title prepended to it</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the unit with the selected PVP title prepended to it</summary>
    </return>
  </function>
  <function name="TogglePerformancePause" type="function" />
  <function name="UnitRangedDamage" type="function">
    <summary>Returns information about a unit's range attack damage and speed</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="rangedAttackSpeed" type="number">
      <summary>The speed of the unit's ranged attack, or 0 if no ranged weapon is equipped</summary>
    </return>
    <return name="minDamage" type="number">
      <summary>The minimum base damage per attack</summary>
    </return>
    <return name="maxDamage" type="number">
      <summary>The maximum base damage per attack</summary>
    </return>
    <return name="physicalBonusPos" type="number">
      <summary>The amount of bonus physical damage, includes Spell Damage bonuses</summary>
    </return>
    <return name="physicalBonusNeg" type="number">
      <summary>The amount of negative modifiers to physical damage</summary>
    </return>
    <return name="percent" type="number">
      <summary>A percentage modifier, represented as decimal 0 to 1</summary>
    </return>
  </function>
  <function name="GetTrainerServiceSkillLine" type="function">
    <summary>Returns the name of the given skill line</summary>
    <param name="index" type="number">
      <summary>The index of the skill line to query</summary>
    </param>
    <return name="skillLine" type="string">
      <summary>The name of the given skill line (for example "Herbalism")</summary>
    </return>
  </function>
  <function name="ClickTradeButton" type="function">
    <summary>Clicks a specific trade window button</summary>
    <param name="index" type="number">
      <summary>The index of the trade button window to click</summary>
    </param>
  </function>
  <function name="GetPetTimeRemaining" type="function">
    <summary>Returns the time till despawn of a temporary pet like shadowfriend and mages' water elemental.</summary>
    <return name="petTimeRemaining" type="number">
      <summary>Time till despawn in milliseconds, nil without a temporary pet.</summary>
    </return>
  </function>
  <function name="UnitLevel" type="function">
    <summary>Returns the level of a given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="level" type="number">
      <summary>The level of the unit.  If the level is unknown (due to it being too high) this will return -1.</summary>
    </return>
  </function>
  <function name="UnitPVPRank" type="function">
    <summary>Returns a unit's PVP rank as a number</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="rank" type="number">
      <summary>The numeric PVP rank of the unit.  If the unit has no PVP rank, this returns 0.</summary>
    </return>
  </function>
  <function name="strsplit" type="function">
    <summary>Splits a string based on another seperator string</summary>
    <param name="sep" type="string">
      <summary>The seperator string to use</summary>
    </param>
    <param name="text" type="string">
      <summary>The text to split</summary>
    </param>
    <param name="limit" type="number">
      <summary>The maximum number of pieces to split the string into</summary>
    </param>
    <return name="..." type="string">
      <summary>A list of strings, split from the text based on the seperator string</summary>
    </return>
  </function>
  <function name="GetLookingForGroup" type="function">
    <summary>Retrieves information about the players LFG status.</summary>
    <return name="type1" type="number">
      <summary>The index of the first selected group type.</summary>
    </return>
    <return name="name1" type="number">
      <summary>The index of the first selected objective.</summary>
    </return>
    <return name="type2" type="number">
      <summary>The index of the second selected group type.</summary>
    </return>
    <return name="name2" type="number">
      <summary>The index of the second selected objective.</summary>
    </return>
    <return name="type3" type="number">
      <summary>The index of the third selected group type.</summary>
    </return>
    <return name="name3" type="number">
      <summary>The index of the third selected objective.</summary>
    </return>
    <return name="lfmType" type="number">
      <summary>The index of the selected group type on the LFM tab.</summary>
    </return>
    <return name="lfmName" type="number">
      <summary>The index of the selected objective on the LFM tab.</summary>
    </return>
    <return name="comment" type="string">
      <summary>The comment enterd on the LFG tab.</summary>
    </return>
    <return name="queued" type="boolean">
      <summary>true if the player is queued to join a group ( Auto Join is ticked ), false otherwise</summary>
    </return>
    <return name="lfgStatus" type="boolean">
      <summary>true if the player is looking for a group, false otherwise</summary>
    </return>
    <return name="lfmStatus" type="boolean">
      <summary>true if the player is looking for more players for his group, false otherwise</summary>
    </return>
    <return name="autoaddStatus" type="boolean">
      <summary>true if the player choose to automatically add members to his group that fit the criteria, false otherwise</summary>
    </return>
  </function>
  <function name="UnitIsTapped" type="function">
    <summary>Returns whether or not a unit is tapped by anyone (not necessarily the player)</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
  </function>
  <function name="PetPassiveMode" type="function">
    <summary>Sets the pet into passive mode</summary>
  </function>
  <function name="SortWho" type="function">
    <summary>Sets the sort method for the "Who" list</summary>
    <param name="sortType" type="string">
      <summary>A sort type used to sort the list</summary>
    </param>
  </function>
  <function name="CommentatorZoomIn" type="function" />
  <function name="UnitIsTalking" type="function">
    <summary>Returns 1 if the unit is currently talking, or nil otherwise.</summary>
    <param name="name" type="string">
      <summary>The name of the unit in question.</summary>
    </param>
    <return name="state" type="number" apitype="1nil">
      <summary>1 if the unit is currently talking, otherwise nil.</summary>
    </return>
  </function>
  <function name="GetShapeshiftFormInfo" type="function">
    <summary>Returns information about a shapeshift form</summary>
    <param name="index" type="number">
      <summary>The index of a shapeshift form</summary>
    </param>
    <return name="texture" type="string">
      <summary>The path to the shapeshift form's icon texture</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the shapeshift form</summary>
    </return>
    <return name="isActive" type="number" apitype="1nil">
      <summary>1 if the shapeshift form is currently active, otherwise nil</summary>
    </return>
    <return name="isCastable" type="number" apitype="1nil">
      <summary>1 if the shapeshift form is currently castable, otherwise nil</summary>
    </return>
  </function>
  <function name="unpack" type="function" />
  <function name="UnitIsSameServer" type="function">
    <summary>Returns whether or not two units are from the same server</summary>
    <param />
    <param />
    <return name="isSame" type="number" apitype="1nil">
      <summary>1 if the two units are from the same server, otherwise nil.</summary>
    </return>
  </function>
  <function name="StopAttack" type="function">
    <summary>Stops auto-attack if active</summary>
  </function>
  <function name="UnitIsPossessed" type="function">
    <summary>Returns whether or not the given unit is possessed (through for example Mind Control)</summary>
    <param />
    <return name="isPossessed" type="number" apitype="1nil">
      <summary>1 if the given unit is possessed, nil otherwise</summary>
    </return>
  </function>
  <function name="UnitIsPlusMob" type="function">
    <summary>Returns whether or not the given unit is an elite mob</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="isPlus" type="number" apitype="1nil">
      <summary>1 if the unit is an elite mob, otherwise nil</summary>
    </return>
  </function>
  <function name="ShowMiniWorldMapArrowFrame" type="function">
    <summary>Shows or hides the battlefield minimap's player arrow</summary>
    <param name="show" type="boolean">
      <summary>If the battlefield minimap's player arrow should be shown</summary>
    </param>
  </function>
  <function name="GetMouseButtonClicked" type="function">
    <summary>Returns which mouse button triggered the current click</summary>
    <return name="button" type="string">
      <summary>The name of the mouse button that triggered the given click</summary>
    </return>
  </function>
  <function name="GetWatchedFactionInfo" type="function">
    <summary>Returns information about the faction currently being watched</summary>
    <return name="name" type="string">
      <summary>The name of the faction being watched</summary>
    </return>
    <return name="reaction" type="number">
      <summary>The current faction standing, as a number</summary>
    </return>
    <return name="min" type="number">
      <summary>The minimum value for the faction status bar</summary>
    </return>
    <return name="max" type="number">
      <summary>The maximum value for the faction status bar</summary>
    </return>
    <return name="value" type="number">
      <summary>The current value for the faction status bar</summary>
    </return>
  </function>
  <function name="ChannelUnSilenceVoice" type="function">
    <summary>Unsilences a player on a given channel</summary>
    <paramchoice>
      <param name="channelName" type="string">
        <summary>The name of a channel</summary>
      </param>
      <param name="channelId" type="number">
        <summary>The numeric index of a channel</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetTradeSkillSelectionIndex" type="function">
    <summary>Returns the index of the currently selected line in the Tradeskill window</summary>
    <return name="index" type="number">
      <summary>The index of the currently selected line in the tradeskill window</summary>
    </return>
  </function>
  <function name="UnitIsPVPFreeForAll" type="function">
    <summary>Returns whether the unit is flagged for free-for-all PVP, EG in a world Arena</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid of the unit to query</summary>
    </param>
    <return name="isFreeForAll" type="boolean">
      <summary>Whether the unit is flagged for free-for-all PVP</summary>
    </return>
  </function>
  <function name="IsQuestWatched" type="function">
    <summary>Returns whether or not a given quest is currently being watched</summary>
    <param name="index" type="number">
      <summary>The index of a quest in the quest log</summary>
    </param>
    <return name="isWatched" type="number" apitype="1nil">
      <summary>1 if the quest is being watched, otherwise nil</summary>
    </return>
  </function>
  <function name="UnitIsPVP" type="function">
    <summary>Returns whether or not a unit is PVP enabled</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="isPVP" type="number" apitype="1nil">
      <summary>1 if the unit is PVP enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumFriends" type="function">
    <summary>Returns the number of friends on the player's friend list</summary>
    <return name="numFriends" type="number">
      <summary>The number of friends on the player's friend list</summary>
    </return>
  </function>
  <function name="UnitIsInMyGuild" type="function">
    <summary>Returns whether or not a given unit or player is in the player's guild</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitId to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="inGuild" type="number" apitype="1nil">
      <summary>1 if the unit is in the player's guild, otherwise nil</summary>
    </return>
  </function>
  <function name="GetUnitPowerModifier" type="function">
    <summary>Returns the power modifier for a pet.  Used to modify the amount of mana a pet gains from +intellect.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="modifier" type="number">
      <summary>Power Modifier</summary>
    </return>
  </function>
  <function name="KeyRingButtonIDToInvSlotID" type="function">
    <summary>Converts a key ring slotID to an inventory slotID</summary>
    <param name="buttonID" type="number">
      <summary>The index of the key in the keyring.  The top-left slot is 1, and proceed from left to right, top to bottom.</summary>
    </param>
    <return name="inventoryID" type="number">
      <summary>The inventoryID that corresponds to the given key ring slot</summary>
    </return>
  </function>
  <function name="GetBattlefieldScore" type="function">
    <summary>Returns information about a specific line in the battleground or arena score list</summary>
    <param name="index" type="number">
      <summary>The index of the row in the battlefield score data</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player</summary>
    </return>
    <return name="killingBlows" type="number">
      <summary>The number of killing blows gained in the battlefield</summary>
    </return>
    <return name="honorableKills" type="number">
      <summary>The number of honorable kills gained in the battlefield</summary>
    </return>
    <return name="deaths" type="number">
      <summary>The number of deaths the player had during the battlefield</summary>
    </return>
    <return name="honorGained" type="number">
      <summary>The amount of honor gained during the battlefield</summary>
    </return>
    <return name="faction" type="number">
      <summary>The faction of the player</summary>
    </return>
    <return name="rank" type="number">
      <summary>Deprecated; always 0</summary>
    </return>
    <return name="race" type="string">
      <summary>The player's class</summary>
    </return>
    <return name="classToken" type="string">
      <summary>The path to the classes icon's texture</summary>
    </return>
    <return name="damageDone" type="number">
      <summary>The amount of damage done in the battlefield</summary>
    </return>
    <return name="healingDone" type="number">
      <summary>The amount of healing done in the battlefield</summary>
    </return>
  </function>
  <function name="GetMinigameState" type="function" />
  <function name="GetBindLocation" type="function">
    <summary>Returns the value of the Hearthstone bind location</summary>
    <return name="location" type="string">
      <summary>The current value of the Hearthstone bind location</summary>
    </return>
  </function>
  <function name="UnitIsGhost" type="function">
    <summary>Returns whether or not a unit or player is currently a ghost</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="fullname" type="string">
        <summary>The full name of the unit to query</summary>
      </param>
    </paramchoice>
    <return name="isGhost" type="number" apitype="1nil">
      <summary>1 if the given unit is a ghost, otherwise nil</summary>
    </return>
  </function>
  <function name="PlaceAuctionBid" type="function">
    <summary>Places a bid on an auction item</summary>
    <param name="type" type="string">
      <summary>The auction listing type</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the auction in the listing</summary>
    </param>
    <param name="bid" type="number">
      <summary>The bid amount, in copper</summary>
    </param>
  </function>
  <function name="ReplaceEnchant" type="function">
    <summary>Confirms replacing an existing enchant</summary>
  </function>
  <function name="UnitIsEnemy" type="function">
    <summary>Returns true or false depending on whether the specified units are enemies or not</summary>
    <param name="unit" type="string">
      <summary>UnitID of the first target</summary>
    </param>
    <param name="otherUnit" type="string">
      <summary>UnitID of the second target</summary>
    </param>
    <return name="isEnemy" type="boolean">
      <summary>true if the specified units are enemies, false otherwise</summary>
    </return>
  </function>
  <function name="UnitIsDND" type="function">
    <summary>Returns whether or not a unit is flagged DND</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="isDND" type="number" apitype="1nil">
      <summary>1 if the unit is flagged Do Not Disturb, otherwise nil</summary>
    </return>
  </function>
  <function name="GetCVarMax" type="function">
    <summary>Returns the maximum value allowed for a given CVar</summary>
    <param name="cvar" type="string">
      <summary>The name of the CVar to query</summary>
    </param>
    <return name="max" type="number">
      <summary>The maximum value allowed for the given CVar</summary>
    </return>
  </function>
  <function name="UnitIsCorpse" type="function">
    <summary>Returns whether or not the given unit is a corpse</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="isCorpse" type="number" apitype="1nil">
      <summary>1 if the unit is a corpse, otherwise nil</summary>
    </return>
  </function>
  <function name="GuildControlDelRank" type="function">
    <summary>Deletes a guild rank.</summary>
    <param name="name" type="string">
      <summary>The name of the rank to delete.</summary>
    </param>
  </function>
  <function name="GetGuildBankItemInfo" type="function">
    <summary>Returns information about the guild bank item in a given slot</summary>
    <param name="tab" type="number">
      <summary>The index of the guild bank tab</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot to query</summary>
    </param>
    <return name="texture" type="string">
      <summary>The item's icon texture</summary>
    </return>
    <return name="count" type="number">
      <summary>The amount of items in the stack</summary>
    </return>
    <return name="locked" type="boolean">
      <summary>true if the item is currently locked, otherwise nil.  An item is locked when it is picked up by someone in your guild.</summary>
    </return>
  </function>
  <function name="SetActiveVoiceChannelBySessionID" type="function">
    <summary>Sets the currently active voice chat channel</summary>
    <param name="session" type="number">
      <summary>The sessionID of the voice chat channel.  This can be obtained by enumerating GetVoiceSessionInfo().</summary>
    </param>
  </function>
  <function name="UnitIsAFK" type="function">
    <summary>Query a unit's AFK status.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="fullname" type="string">
        <summary>The full name of the unit to query</summary>
      </param>
    </paramchoice>
    <return name="isAFK" type="number" apitype="1nil">
      <summary>1 if the given unit is AFK, otherwise nil</summary>
    </return>
  </function>
  <function name="BeginTrade" type="function">
    <summary>Accept a trade request from someone.</summary>
  </function>
  <function name="GetMerchantItemCostItem" type="function">
    <summary>Returns information about an item used as currency to purchase another item (such as battleground rewards)</summary>
    <param name="index" type="number">
      <summary>The index of an item in the merchant window</summary>
    </param>
    <param name="itemIndex" type="number">
      <summary>The index of the item cost associated with the item for sale.  For the PVP mount rewards, there are three different items costs, 30 marks from each battleground.  The first item cost can be queried with an itemIndex of 1, and so on.</summary>
    </param>
    <return name="itemTexture" type="string">
      <summary>The texture for the item that is acting as currency</summary>
    </return>
    <return name="itemValue" type="number">
      <summary>The number of items required for the given purchase</summary>
    </return>
  </function>
  <function name="xpcall" type="function" />
  <function name="GetInboxNumItems" type="function">
    <summary>Returns the number of mail items in currently in your inbox.</summary>
    <return name="numItems" type="number">
      <summary>The number of items in the inbox</summary>
    </return>
  </function>
  <function name="GetContainerNumFreeSlots" type="function">
    <summary>Gets the number of free slots for a bag and the type of items that can go in the bag</summary>
    <param name="containerID" type="number">
      <summary>The container to check</summary>
    </param>
    <return name="freeSlots" type="number">
      <summary>The number of empty slots in the bag</summary>
    </return>
    <return name="bagType">
      <summary>The type of the container</summary>
    </return>
  </function>
  <function name="GetTradeSkillNumReagents" type="function">
    <summary>Returns the number of reagents required for a trade skill recipe</summary>
    <param name="index" type="number">
      <summary>The index of a trade skill recipe</summary>
    </param>
    <return name="numReagents" type="number">
      <summary>The number of reagents required for a given recipe</summary>
    </return>
  </function>
  <function name="UnitInRange" type="function">
    <summary>Returns whether the given raid or party member is in range of your most useful spells</summary>
    <param name="&quot;unit&quot;" type="string" apitype="unitid">
      <summary>The target unit (must be in your party or raid)</summary>
    </param>
  </function>
  <function name="UnitInRaid" type="function">
    <summary>Returns whether the unit specified is in your raid group</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid of the unit to query</summary>
    </param>
    <return name="inRaid" type="number">
      <summary>Will return 1 if the unit is in your raid group, otherwise nil</summary>
    </return>
  </function>
  <function name="UnitHealthMax" type="function">
    <summary>Returns the maximum health value for a given unit</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="maxValue" type="number">
      <summary>The maximum health value for the given unit.  If the unit is not the player, the player's pet, or a member of the player's party or raid, the values returned will be in terms of percentage (i.e. will always return 100 for maxValue.</summary>
    </return>
  </function>
  <function name="rad" type="function">
    <summary>This function is simply an alias for math.rad</summary>
  </function>
  <function name="KBQuery_BeginLoading" type="function">
    <summary>Queries the knowledge base server for articles</summary>
    <param name="searchText" type="string">
      <summary>The search string to use.  The empty string will search for all articles in the given category</summary>
    </param>
    <param name="categoryIndex" type="number">
      <summary>The category index</summary>
    </param>
    <param name="subcategoryIndex" type="number">
      <summary>The subcategory index</summary>
    </param>
    <param name="numArticles" type="number">
      <summary>The number of articles to be returned for each page</summary>
    </param>
    <param name="page" type="number">
      <summary>The page of the total results that should be displayed.</summary>
    </param>
  </function>
  <function name="UnitFactionGroup" type="function">
    <summary>Gives information about the units faction in english and the gamelocale. Returns nil when not available.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="fullname" type="string">
        <summary>The full name of the unit to query</summary>
      </param>
    </paramchoice>
    <return name="factionEnglish" type="string">
      <summary>English faction name (Horde/Alliance) of the unit.</summary>
    </return>
    <return name="factionLocale" type="string">
      <summary>Faction name (Horde/Alliance) of the units faction in current gamelocale.</summary>
    </return>
  </function>
  <function name="UnitExists" type="function">
    <summary>Returns whether or not a given unit exists</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The full name of a unit to query</summary>
      </param>
    </paramchoice>
    <return name="exists" type="number" apitype="1nil">
      <summary>1 if the unit exists, otherwise nil</summary>
    </return>
  </function>
  <function name="RemoveSkillUp" type="function" />
  <function name="UnitDebuff" type="function">
    <summary>Returns information about a debuff on a given unit.</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <param name="index" type="number">
      <summary>The buff index to query for the given unit</summary>
    </param>
    <param name="dispelOnly" type="number" apitype="1nil" optional="true">
      <summary>Only show those debuffs which can be dispelled by the player</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the debuff in the current locale</summary>
    </return>
    <return name="rank" type="number">
      <summary>The rank of the debuff, or the empty string</summary>
    </return>
    <return name="icon" type="string">
      <summary>The path to the debuff's icon texture</summary>
    </return>
    <return name="debuffStack" type="number">
      <summary>The amount of times the given debuff has stacked, or how many charges are left</summary>
    </return>
    <return name="debuffType" type="string">
      <summary>The type of the debuff if specified, or nil</summary>
    </return>
    <return name="duration" type="number">
      <summary>The full duration of the debuff, in seconds</summary>
    </return>
    <return name="timeLeft" type="number">
      <summary>The amount of time left on the debuff, in seconds</summary>
    </return>
  </function>
  <function name="AddSkillUp" type="function" />
  <function name="UnitCreatureType" type="function">
    <summary>Returns the creature type of a given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="type" type="string">
      <summary>The creature type of the unit (such as Humanoid, Demon, Beast, etc.)</summary>
    </return>
  </function>
  <function name="UnitCreatureFamily" type="function">
    <summary>Returns the creature family of the given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="family" type="string">
      <summary>The creature family of the unit ("Humanoid", "Dragonkin" etc.)</summary>
    </return>
  </function>
  <function name="UnitClassification" type="function">
    <summary>Returns a classification indicator for the queried unit.</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>Unit to query.</summary>
    </param>
    <return name="classification" type="string">
      <summary>Classification of the queried unit.</summary>
    </return>
  </function>
  <function name="GetTradeSkillInfo" type="function">
    <summary>Returns information about the recipes of the currently selected trade skill.</summary>
    <param name="index" type="number">
      <summary>The index of the trade skill to query.</summary>
    </param>
    <return name="skillName" type="string">
      <summary>The name of the trade skill.</summary>
    </return>
    <return name="skillType" type="string">
      <summary>The skill type of the trade skill.</summary>
    </return>
    <return name="numAvailable" type="number">
      <summary>The number of times you can cast this trade skill.</summary>
    </return>
    <return name="isExpanded" type="number" apitype="1nil">
      <summary>1 if this is a header and is expanded, nil otherwise</summary>
    </return>
  </function>
  <function name="UnitChannelInfo" type="function">
    <summary>Returns information about the spell a unit channeling.</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the spell being cast</summary>
    </return>
    <return name="nameSubtext" type="string">
      <summary>The rank of the spell being cast, or other sub-text</summary>
    </return>
    <return name="text" type="string">
      <summary>The text to be displayed</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the spell icon texture</summary>
    </return>
    <return name="startTime" type="number">
      <summary>The time the cast was started, in millisecond precision</summary>
    </return>
    <return name="endTime" type="number">
      <summary>The time the cast will be finished, in millisecond precision</summary>
    </return>
    <return name="isTradeSkill" type="number" apitype="1nil">
      <summary>1 if the spell being cast is a tradeskill, otherwise nil.</summary>
    </return>
  </function>
  <function name="TargetLastEnemy" type="function">
    <summary>Re-targets the last targeted enemy unit</summary>
  </function>
  <function name="SetSelectedIgnore" type="function">
    <summary>Sets the currently selected ignore entry</summary>
    <param name="index" type="number">
      <summary>The index in the ignore list</summary>
    </param>
  </function>
  <function name="GetBidderAuctionItems" type="function">
    <summary>Retrieves bidding data for items you are bidding on</summary>
    <param name="page" type="number">
      <summary>The page number to retrieve bidding data for, or all pages if nil</summary>
    </param>
  </function>
  <function name="UnitAttackSpeed" type="function">
    <summary>Returns the mainhand and offhand attack speed of the given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitId to query</summary>
    </param>
    <return name="speed" type="number">
      <summary>The speed of the mainhand attack</summary>
    </return>
    <return name="oddhandSpeed" type="number">
      <summary>The speed of the offhand attack</summary>
    </return>
  </function>
  <function name="IsFlyableArea" type="function">
    <summary>Returns whether or not the player's current location is a flyable area</summary>
    <return name="isFlyable" type="number" apitype="1nil">
      <summary>1 if the current area is a flyable area, otherwise nil</summary>
    </return>
  </function>
  <function name="InviteUnit" type="function">
    <summary>Invites a player or unit to the player's party</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to invite</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of a unit to invite</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetSpellTabInfo" type="function">
    <summary>Returns information about a tab in the spellbook</summary>
    <param name="index" type="number">
      <summary>The index of the spell tab.  Valid values are 1 through GetNumSpellTabs()</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the spell tab</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the spell tab's icon texture</summary>
    </return>
    <return name="offset" type="number">
      <summary>The offset for spellids within this tab</summary>
    </return>
    <return name="numSpells" type="number">
      <summary>The number of spells in the tab</summary>
    </return>
  </function>
  <function name="GetNumFrames" type="function">
    <summary>Returns the number of created frame objects (and derivatives)</summary>
    <return name="numFrames" type="number">
      <summary>The number of frame objects (and derivatives) created.  This value does not include textures and fontstrings.</summary>
    </return>
  </function>
  <function name="UnitAttackBothHands" type="function">
    <summary>Returns information about a unit's weapon skill</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="mainHandAttackBase" type="number">
      <summary>The base weapon skill for the type of weapon equipped in the main hand</summary>
    </return>
    <return name="mainHandAttackMod" type="number">
      <summary>Any modifiers to the weapon skill for the type of weapon equipped in the main hand</summary>
    </return>
    <return name="offHandHandAttackBase" type="number">
      <summary>The base weapon skill for the type of weapon equipped in the offhand</summary>
    </return>
    <return name="offHandAttackMod" type="number">
      <summary>Any modifiers to the weapon skill for the type of weapon equipped in the offhand</summary>
    </return>
  </function>
  <function name="UnitArmor" type="function">
    <summary>This function returns the current ammount of armor and its breakdown between base armor and positive and degative additions due to buffs and debuffs.</summary>
    <paramchoice>
      <param name="unitId" type="string">
        <summary>The unitId to query, such as "player", "target" or "raid10"</summary>
      </param>
      <param name="unitName" type="string">
        <summary>The exact name of the unit to query</summary>
      </param>
    </paramchoice>
    <return name="base" type="number">
      <summary>The base armor for that unit, not counting buffs, but counting base armor from pieces of clothing.</summary>
    </return>
    <return name="effectiveArmor" type="number">
      <summary>The effective armor for that unit, counting buffs and base armor from pieces of clothing.</summary>
    </return>
    <return name="armor" type="number">
      <summary>The effective armor for that unit, counting buffs and base armor from pieces of clothing. It seems to always mirror the "effectiveArmor" return from this same function.</summary>
    </return>
    <return name="posBuff" type="number">
      <summary>Any positive armor gained from buffs, this gets added to "base" to form "effectiveArmor".</summary>
    </return>
    <return name="negBuff" type="number">
      <summary>Any negative armor lost from debuffs, this gets added to "base" to form "effectiveArmor".</summary>
    </return>
  </function>
  <function name="IsEquippedItemType" type="function">
    <summary>Returns whether or not an item type is currently equipped</summary>
    <param name="type" type="string">
      <summary>The item type to query</summary>
    </param>
    <return name="isEquipped" type="number" apitype="1nil">
      <summary>1 if the given item type is currently equipped, otherwise nil</summary>
    </return>
  </function>
  <function name="JumpOrAscendStart" type="function" />
  <function name="GetRewardHonor" type="function">
    <summary>Returns the amount of reward honor for the displayed quest.</summary>
    <return name="honor" type="number">
      <summary>The amount of reward honor for the displayed quest</summary>
    </return>
  </function>
  <function name="UnitAffectingCombat" type="function">
    <summary>Returns whether or not a unit is currently in combat</summary>
    <param name="unit" type="string">
      <summary>The name of the unit to query</summary>
    </param>
    <return name="inCombat" type="number" apitype="1nil">
      <summary>1 if the unit is currently involved in combat, otherwise nil</summary>
    </return>
  </function>
  <function name="ItemTextGetCreator" type="function">
    <summary>Gets the creator of the text currently being viewed. Used for books, parchments and the like.</summary>
    <return name="creator" type="string">
      <summary>Creator of the text, nil if not available.</summary>
    </return>
  </function>
  <function name="GiveMasterLoot" type="function">
    <summary>Awards the given loot to the specified candidate</summary>
    <param name="slot" type="number">
      <summary>The loot slot item to award</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the loot candidate as returned by GetMasterLootCandidate()</summary>
    </param>
  </function>
  <function name="SetModifiedClick" type="function">
    <summary>Sets a modified click for a given action</summary>
    <param name="action" type="string">
      <summary>The action to set</summary>
    </param>
    <param name="binding" type="string">
      <summary>The modified click to set</summary>
    </param>
  </function>
  <function name="ChannelInvite" type="function">
    <summary>Invites a player to a given channel</summary>
    <param name="channel" type="string">
      <summary>The channel name</summary>
    </param>
    <param name="name" type="string">
      <summary>The player's name</summary>
    </param>
  </function>
  <function name="TurnOrActionStop" type="function" />
  <function name="DeleteGMTicket" type="function">
    <summary>Abandons the currently pending GM ticket</summary>
  </function>
  <function name="TurnLeftStart" type="function" />
  <function name="TurnInGuildCharter" type="function">
    <summary>Turns in a completed guild charter</summary>
  </function>
  <function name="TurnInArenaPetition" type="function">
    <summary>Turns in an arena petition</summary>
    <param name="teamSize" type="number">
      <summary>The size of the arena team</summary>
    </param>
    <param name="bgColor.r" type="number">
      <summary>The red component of the background color (0.0 - 1.0)</summary>
    </param>
    <param name="bgColor.g" type="number">
      <summary>The green component of the background color (0.0 - 1.0)</summary>
    </param>
    <param name="bgColor.b" type="number">
      <summary>The blue component of the background color (0.0 - 1.0)</summary>
    </param>
    <param name="iconStyle" type="number">
      <summary>The number of the chosen icon</summary>
    </param>
    <param name="iconColor.r" type="number">
      <summary>The red component of the icon color (0.0 - 1.0)</summary>
    </param>
    <param name="iconColor.g" type="number">
      <summary>The green component of the icon color (0.0 - 1.0)</summary>
    </param>
    <param name="iconColor.b" type="number">
      <summary>The blue component of the icon color (0.0 - 1.0)</summary>
    </param>
    <param name="borderStyle" type="number">
      <summary>The number of the chosen border style</summary>
    </param>
    <param name="borderStyle.r" type="number">
      <summary>The red component of the border color (0.0 - 1.0)</summary>
    </param>
    <param name="borderStyle.g" type="number">
      <summary>The green component of the border color (0.0 - 1.0)</summary>
    </param>
    <param name="borderStyle.b" type="number">
      <summary>The blue component of the border color (0.0 - 1.0)</summary>
    </param>
  </function>
  <function name="RequestTimePlayed" type="function">
    <summary>Queries the server for the amount of time played on the given character</summary>
  </function>
  <function name="GetChannelDisplayInfo" type="function">
    <summary>Returns information about a given chat channel</summary>
    <param name="index" type="number">
      <summary>The index of the channel in the channel window</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the channel</summary>
    </return>
    <return name="header" type="number" apitype="1nil">
      <summary>1 if the entry is a channel header, otherwise nil</summary>
    </return>
    <return name="collapsed" type="number" apitype="1nil">
      <summary>1 if the entry is a channel header, and the header is collapsed, otherwise nil</summary>
    </return>
    <return name="channelNumber" type="number">
      <summary>The number of the channel.  This corresponds to the slash commands used to talk in a channel.  If the channel doesn't a number, this returns nil</summary>
    </return>
    <return name="count" type="number">
      <summary>The number of members of the channel</summary>
    </return>
    <return name="active" type="number" apitype="1nil">
      <summary>1 if the channel is active, otherwise nil.  This is primarily used for the special "Trade" and "LookingForGroup" channels, since they are inactive when the player is not in a major city</summary>
    </return>
    <return name="category" type="string">
      <summary>The category the chat channel belongs to</summary>
    </return>
    <return name="voiceEnabled" type="number" apitype="1nil">
      <summary>1 if voice chat is enabled for the given channel, otherwise nil</summary>
    </return>
    <return name="voiceActive" type="number" apitype="1nil">
      <summary>1 if voice chat is active for the given channel, otherwise nil</summary>
    </return>
  </function>
  <function name="CreateMacro" type="function">
    <summary>Creates a new macro</summary>
    <param name="name" type="string">
      <summary>The name of the new macro.  Names do not need to be unique, but other API functions can be confusing if two macros with the same name exist</summary>
    </param>
    <param name="iconIndex" type="number">
      <summary>The index of the chosen macro icon</summary>
    </param>
    <param name="body" type="string">
      <summary>The body of the macro</summary>
    </param>
    <param name="local" type="number" apitype="1nil">
      <summary>Determines if the macro should be stored locally, or on the server.  This argument is currently unused.</summary>
    </param>
    <param name="perCharacter" type="number" apitype="1nil">
      <summary>1 if the macro should be stored as a character specific macro, otherwise nil</summary>
    </param>
    <return name="index" type="number">
      <summary>The index of the newly created macro</summary>
    </return>
  </function>
  <function name="IsUsableAction" type="function">
    <summary>Returns whether or not the action is usable</summary>
    <param name="slot" type="number">
      <summary>The slotid of the action to query</summary>
    </param>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the skill is usable, otherwise nil</summary>
    </return>
    <return name="notEnoughMana" type="number" apitype="1nil">
      <summary>1 if the player is lacking the mana to take the action, otherwise nil</summary>
    </return>
  </function>
  <function name="GetInventorySlotInfo" type="function">
    <summary>Returns information about an inventory slot</summary>
    <param name="slotName" type="string">
      <summary>The name of an inventory slot to query</summary>
    </param>
    <return name="id" type="number">
      <summary>The numeric slotId that should be used in other GetInventory functions</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the texture to be displayed when this slot is empty</summary>
    </return>
    <return name="checkRelic" type="number" apitype="1nil">
      <summary>1 if the slot is a relic slot on the given character, otherwise nil.  The ranged slot token is re-used for the relic slot, and this return distinguishes between the two.</summary>
    </return>
  </function>
  <function name="ShowCloak" type="function">
    <summary>This function enables or disables the showing of the cloak on the player's character</summary>
    <param name="enable" type="boolean">
      <summary>true, 1, strings, tables and userdata enable the cloak; 0, false and nil disable the cloak</summary>
    </param>
  </function>
  <function name="ToggleTris" type="function" />
  <function name="IsMuted" type="function">
    <summary>Returns the mute status for a given player.</summary>
    <param name="unit" type="string">
      <summary>The name of the unit to query.</summary>
    </param>
    <return name="muted" type="number" apitype="1nil">
      <summary>1 if the unit is muted, nil otherwise</summary>
    </return>
  </function>
  <function name="IsStealthed" type="function">
    <summary>Returns whether or not the player is currently stealthed</summary>
    <return name="stealthed" type="number" apitype="1nil">
      <summary>1 if the player is stealthed, otherwise nil</summary>
    </return>
  </function>
  <function name="KBSetup_GetCategoryData" type="function">
    <summary>Returns information about a knowledge base category</summary>
    <param name="index" type="number">
      <summary>The index of the category</summary>
    </param>
    <return name="categoryId" type="number">
      <summary>The unique identifier for the given category</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the category</summary>
    </return>
  </function>
  <function name="SetLayoutMode" type="function" />
  <function name="ToggleRun" type="function">
    <summary>Toggles between running and walking</summary>
  </function>
  <function name="GetGuildRosterMOTD" type="function">
    <summary>Returns the Message of the Day for your guild</summary>
    <return name="guildMOTD" type="string">
      <summary>The Guild Message of the Day</summary>
    </return>
  </function>
  <function name="TogglePortals" type="function" />
  <function name="MoveAndSteerStop" type="function" />
  <function name="TakeInboxMoney" type="function">
    <summary>Takes the money from the specified mail in the inbox</summary>
    <param name="index" type="number">
      <summary>The index of the mail in the inbox</summary>
    </param>
  </function>
  <function name="TogglePetAutocast" type="function">
    <summary>Toggles autocast for a pet action</summary>
    <param name="index" type="number">
      <summary>The pet's action slot</summary>
    </param>
  </function>
  <function name="GetMapZones" type="function">
    <summary>Returns the map zones for a given continent</summary>
    <param name="continentIndex" type="number">
      <summary>The index of a world continent</summary>
    </param>
    <return name="..." type="string">
      <summary>A list of strings containing all of the map zones in the given continent</summary>
    </return>
  </function>
  <function name="GetZoneText" type="function">
    <summary>Returns the name of the current zone</summary>
    <return name="zone" type="string">
      <summary>The name of the current zone</summary>
    </return>
  </function>
  <function name="AcceptAreaSpiritHeal" type="function">
    <summary>Notifies the server that you are ready to accept the periodic area resurrection from a battleground spirit healer</summary>
  </function>
  <function name="TogglePerformanceValues" type="function" />
  <function name="EnumerateFrames" type="function">
    <summary>Returns the next frame following the frame passed, or nil if no more frames exist</summary>
    <param name="currentFrame" type="table" optional="true">
      <summary>The current frame to get the next frame, or nil to get the first frame</summary>
    </param>
    <return name="nextFrame" type="table">
      <summary>The frame following currentFrame or nil if no more frames exist, or the first frame if nil was passed</summary>
    </return>
  </function>
  <function name="UnitOnTaxi" type="function">
    <summary>Returns whether or not a given unit is on a taxi</summary>
    <param name="unit" type="string">
      <summary>The unit to query.  This only seems to work for "player".</summary>
    </param>
    <return name="onTaxi" type="number" apitype="1nil">
      <summary>1 if the unit is on a taxi, otherwise nil</summary>
    </return>
  </function>
  <function name="TargetLastFriend" type="function" />
  <function name="TogglePerformanceDisplay" type="function" />
  <function name="AcceptQuest" type="function">
    <summary>Accepts the quest that is currently displayed</summary>
  </function>
  <function name="GetBattlefieldStatus" type="function">
    <summary>Returns information about an active or queued battleground instance</summary>
    <param name="index" type="number">
      <summary>The index of the battleground or arena as listed in the tooltip for the minimap battle status icon.</summary>
    </param>
    <return name="status" type="string">
      <summary>The status of the battlefield</summary>
    </return>
    <return name="mapName" type="string">
      <summary>The name of the battlefield (such as "Alterac Valley", or "All Arenas" for arena battlefields)</summary>
    </return>
    <return name="instanceID" type="number">
      <summary>The battlefield instance assigned to you or the instance you are queuing for, or 0 if you are queuing for all instances</summary>
    </return>
    <return name="levelRangeMin" type="number">
      <summary>The minimum level to queue for this battlefield instance</summary>
    </return>
    <return name="levelRangeMax" type="number">
      <summary>The maximum level to queue for this battlefield instance</summary>
    </return>
    <return name="teamSize" type="number">
      <summary>The number of players on each team for arenas, and 0 for non-arenas</summary>
    </return>
    <return name="registeredMatch" type="number">
      <summary>1 if the battlefield is rated (i.e. rated arena matches), 0 otherwise</summary>
    </return>
  </function>
  <function name="ToggleCollision" type="function" />
  <function name="Sound_ChatSystem_GetInputDriverNameByIndex" type="function">
    <summary>Returns the name of the given chat system sound input driver</summary>
    <param name="index" type="number">
      <summary>The desired index</summary>
    </param>
  </function>
  <function name="NewGMTicket" type="function">
    <summary>Opens a new GM support ticket</summary>
    <param name="type" type="number">
      <summary>The type of ticket that should be opened</summary>
    </param>
    <param name="text" type="string">
      <summary>The text to be sent in the ticket</summary>
    </param>
  </function>
  <function name="MovieRecording_GetTime" type="function">
    <summary>Returns the amount of time since the last video recording operation was started</summary>
    <return name="time" type="string">
      <summary>The amount of time since the last video recording operation was started, as a string HH:MM:SS</summary>
    </return>
  </function>
  <function name="GetItemQualityColor" type="function">
    <summary>Returns the red, green and blue components of the color for the given item quality index. Also returns a hex representation of the same color.</summary>
    <param name="index" type="number">
      <summary>The item quality index, any indexes outside of the following values will be interpreted as a request for quality index 1</summary>
    </param>
    <return name="redComponent" type="number">
      <summary>The red component of the item quality's color. It is a floating point number from 0 to 1.</summary>
    </return>
    <return name="greenComponent" type="number">
      <summary>The green component of the item quality's color. It is a floating point number from 0 to 1.</summary>
    </return>
    <return name="blueComponent" type="number">
      <summary>The blue component of the item quality's color. It is a floating point number from 0 to 1.</summary>
    </return>
    <return name="hexColor" type="string">
      <summary>The hex color code for the given item quality, including the |c at the beginning.</summary>
    </return>
  </function>
  <function name="ToggleAutoRun" type="function">
    <summary>Turns on auto run</summary>
  </function>
  <function name="GetTime" type="function">
    <summary>Returns a number representing the current time, with millisecond precision</summary>
    <return name="time" type="number">
      <summary>A number that represents the current time, with  millisecond precision.  The number itself doesn't correspond to any useful value, but can be compared against itself to give a high prevision time measurement.</summary>
    </return>
  </function>
  <function name="IsSubZonePVPPOI" type="function">
    <summary>Returns whether or not the current subzone is a PVP point of interest</summary>
    <return name="isPVPPOI" type="number" apitype="1nil">
      <summary>1 if the current subzone is a PVP point of interest.  This is used when the "Display World PVP Objectives" setting is set to "Dynamic".  In this case the PVP objectives are only shown when the player is in a PVP point of interest.</summary>
    </return>
  </function>
  <function name="TaxiNodeName" type="function">
    <summary>Returns the name of a given taxi node slot</summary>
    <param name="slot" type="number">
      <summary>The index of a taxi node slot</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the taxi node</summary>
    </return>
  </function>
  <function name="MovieRecording_GetMovieFullPath" type="function">
    <summary>Returns the full path of the movie currently being recorded or compressed</summary>
    <return name="path" type="string">
      <summary>Returns the path to the movie currently being recorded or compressed.  If the client isn't compressing or recording then it will either return the last file to have been recorded or compressed, or the empty string.</summary>
    </return>
  </function>
  <function name="TaxiGetSrcY" type="function">
    <summary>Returns the y coordinate of the source texi node, relative to the taxi frame</summary>
    <param name="source" type="number">
      <summary>The source taxi node</summary>
    </param>
    <param name="dest" type="number">
      <summary>The destination taxi node</summary>
    </param>
    <return name="sY" type="number">
      <summary>The Y coordinate of the source taxi node, relative to the height of the taxi frame</summary>
    </return>
  </function>
  <function name="GetQuestResetTime" type="function">
    <summary>Returns the amount of time until daily quests reset</summary>
    <return name="time" type="number">
      <summary>The amount of time until daily quests reset, in seconds</summary>
    </return>
  </function>
  <function name="GMRequestPlayerInfo" type="function" />
  <function name="assert" type="function" />
  <function name="TaxiGetSrcX" type="function">
    <summary>Returns the x coordinate of the source texi node, relative to the taxi frame</summary>
    <param name="source" type="number">
      <summary>The source taxi node</summary>
    </param>
    <param name="dest" type="number">
      <summary>The destination taxi node</summary>
    </param>
    <return name="sX" type="number">
      <summary>The X coordinate of the source taxi node, relative to the width of the taxi frame</summary>
    </return>
  </function>
  <function name="TaxiGetDestY" type="function">
    <summary>Returns the y coordinate of the destination texi node, relative to the taxi frame</summary>
    <param name="source" type="number">
      <summary>The source taxi node</summary>
    </param>
    <param name="dest" type="number">
      <summary>The destination taxi node</summary>
    </param>
    <return name="dy" type="number">
      <summary>The Y coordinate of the destination taxi node, relative to the height of the taxi frame</summary>
    </return>
  </function>
  <function name="GetNumMapOverlays" type="function">
    <summary>Returns the number of overlays for the current world map</summary>
    <return name="numOverlays" type="number">
      <summary>The number of overlays for the given world map.  An overlay is an area that can be discovered, revealing that part of the map.</summary>
    </return>
  </function>
  <function name="IsActionInRange" type="function">
    <summary>Returns whether or not the action is in range of the current target</summary>
    <param name="action" type="number">
      <summary>The action id</summary>
    </param>
    <return name="inRange" type="number">
      <summary>1 if the action is in range of the current target, 0 if out of range, and nil if the target is invalid for this spell</summary>
    </return>
  </function>
  <function name="GetNumMacros" type="function">
    <summary>Returns the number of macros the player has stored</summary>
    <return name="numAccountMacros" type="number">
      <summary>The number of account-wide macros stored</summary>
    </return>
    <return name="numCharacterMacros" type="number">
      <summary>The number of character specific macros stored</summary>
    </return>
  </function>
  <function name="TargetUnit" type="function">
    <summary>Sets the given unit as your target.  Passing nil will remove your target.  Can only be called from the blizzard UI.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to target</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to target</summary>
      </param>
    </paramchoice>
  </function>
  <function name="TargetNearestRaidMember" type="function" />
  <function name="TargetNearestPartyMember" type="function" />
  <function name="MovieRecording_IsSupported" type="function">
    <summary>Returns whether or not movie recording is supported by client</summary>
    <return name="isSupported" type="boolean">
      <summary>true if the client supports video recording, otherwise nil</summary>
    </return>
  </function>
  <function name="CanComplainChat" type="function">
    <summary>Returns whether or not a given chat line can be reported</summary>
    <param name="lineID" type="number">
      <summary>The unique identifier of a given chat line</summary>
    </param>
    <return name="canComplain" type="number" apitype="1nil">
      <summary>1 if the player can complain about the given chat line, otherwise nil</summary>
    </return>
  </function>
  <function name="GetInspectHonorData" type="function">
    <summary>Returns honor information about an inspect target</summary>
    <return name="todayHK" type="number">
      <summary>The number of honor kills for today</summary>
    </return>
    <return name="todayHonor" type="number">
      <summary>The amount of honor earned today</summary>
    </return>
    <return name="yesterdayHK" type="number">
      <summary>The amount of honor kills for yesterday</summary>
    </return>
    <return name="yesterdayHonor" type="number">
      <summary>The amount of honor earned yesterday</summary>
    </return>
    <return name="lifetimeHK" type="number">
      <summary>The amount of honor kills over the player's lifetime</summary>
    </return>
    <return name="lifetimeRank" type="number">
      <summary>The highest earned rank in the old honor system. Valid returns can be determined with GetPVPRankInfo()</summary>
    </return>
  </function>
  <function name="TargetNearestFriend" type="function" />
  <function name="TargetNearestEnemy" type="function" />
  <function name="GetVoiceSessionInfo" type="function">
    <summary>Returns information about a given voice session</summary>
    <param name="session" type="number">
      <summary>The session id</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the voice session (channel)</summary>
    </return>
    <return name="active" type="number" apitype="1nil">
      <summary>1 if the voice session is active, otherwise nil</summary>
    </return>
  </function>
  <function name="ConfirmAcceptQuest" type="function">
    <summary>Confirms accepting a quest that someone in your group is starting</summary>
  </function>
  <function name="UnitCanCooperate" type="function">
    <summary>Returns whether or not the two given units can cooperate with each other</summary>
    <param />
    <param />
    <return name="canCooperate" type="number" apitype="1nil">
      <summary>1 if the two units can cooperate with each other, otherwise nil</summary>
    </return>
  </function>
  <function name="StopTradeSkillRepeat" type="function">
    <summary>Cancels a repeating tradeskill</summary>
  </function>
  <function name="MusicPlayer_VolumeDown" type="function">
    <summary>Turns the volume down in iTunes</summary>
  </function>
  <function name="IsUsableSpell" type="function">
    <summary>Returns whether or not a given spell is usable or cannot be used due to lack of mana</summary>
    <param />
    <param name="bookType" type="string" optional="true">
      <summary>The type of spell book to look up spellIndex in (required when using spellIndex)</summary>
    </param>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the spell is usable, nil otherwise</summary>
    </return>
    <return name="outOfMana" type="number" apitype="1nil">
      <summary>1 if the spell cannot be used due to lack of mana, nil otherwise</summary>
    </return>
  </function>
  <function name="KBArticle_GetData" type="function">
    <summary>Returns information about the last requested knowledge base article</summary>
    <return name="id" type="number">
      <summary>The unique articleId for the article</summary>
    </return>
    <return name="subject" type="string">
      <summary>The subject of the article</summary>
    </return>
    <return name="subjectAlt" type="string">
      <summary>Alternate text for the article subject</summary>
    </return>
    <return name="text" type="string">
      <summary>The body of the article</summary>
    </return>
    <return name="keywords" type="string">
      <summary>A comma separated list of keywords for the article</summary>
    </return>
    <return name="languageId" type="number">
      <summary>The languageId for the given article.  See the returns from API_KBSetup_GetLanguageData() for these values</summary>
    </return>
    <return name="isHot" type="boolean">
      <summary>true if the article is a "Hot Item", otherwise false</summary>
    </return>
  </function>
  <function name="GetNumBattlefields" type="function">
    <summary>Returns the number of available battlefields</summary>
    <return name="numBattlefields" type="number">
      <summary>The number of available battlefields.  If the player is not currently conversing with a battlemaster, this function may return 0 or an older cached value.</summary>
    </return>
  </function>
  <function name="SwapRaidSubgroup" type="function">
    <summary>Swaps two players between groups in the raid</summary>
    <param name="index1" type="string" apitype="unitid">
      <summary>The raidid of the first unit</summary>
    </param>
    <param name="index2" type="string" apitype="unitid">
      <summary>The raidid of the second unit</summary>
    </param>
  </function>
  <function name="MusicPlayer_NextTrack" type="function">
    <summary>Goes to the next track in iTunes.</summary>
  </function>
  <function name="Stuck" type="function" />
  <function name="GuildControlGetRankName" type="function">
    <summary>Returns the name of the given guild rank</summary>
    <param name="rankIndex" type="number">
      <summary>The rank index to query</summary>
    </param>
    <return name="rankName" type="string">
      <summary>The name of the given guild rank</summary>
    </return>
  </function>
  <function name="HasFilledPetition" type="function">
    <summary>Returns whether or not the player has a completed petition</summary>
    <return name="hasPetition" type="number" apitype="1nil">
      <summary>1 if the player has a filled in petition, otherwise nil</summary>
    </return>
  </function>
  <function name="GetSpellCritChance" type="function">
    <summary>Returns the amount of crit changce for a given spell school</summary>
    <param name="school" type="number">
      <summary>The spell school to query</summary>
    </param>
    <return name="minCrit" type="number">
      <summary>The amount of crit chance for a given spell school</summary>
    </return>
  </function>
  <function name="GetDodgeChance" type="function">
    <summary>Returns the amount of dodge change the player has, as a percentage</summary>
    <return name="chance" type="number">
      <summary>The amount of dodge change the player currently has as a percentage</summary>
    </return>
  </function>
  <function name="ArenaTeamUninviteByName" type="function">
    <summary>Uninvites a player from an arena team</summary>
    <param name="team" type="number">
      <summary>The index of the arena team</summary>
    </param>
    <param name="name" type="string">
      <summary>The name of the player to uninvite from the given arena team</summary>
    </param>
  </function>
  <function name="StrafeRightStop" type="function">
    <summary>Stops the player from strafing right</summary>
  </function>
  <function name="CloseTaxiMap" type="function">
    <summary>Closes the taxi (flight master) map</summary>
  </function>
  <function name="IsItemInRange" type="function">
    <summary>Returns whether or not a usable item is in range of a given unit</summary>
    <paramchoice>
      <param name="itemid" type="number">
        <summary>The item's id</summary>
      </param>
      <param name="itemname" type="string">
        <summary>The name of an item</summary>
      </param>
      <param name="itemlink" type="string">
        <summary>A valid item link</summary>
      </param>
    </paramchoice>
    <return name="inRange" type="number" apitype="1nil">
      <summary>1 if the item is in range of the given unit, otherwise nil</summary>
    </return>
  </function>
  <function name="UnitResistance" type="function">
    <summary>Returns resistance information for a specific resistance for a unit ID. Returns 0,0,0,0 for non-existing or disallowed units.</summary>
    <param name="unit" type="string">
      <summary>The unitid to query</summary>
    </param>
    <param name="resistanceIndex" type="number">
      <summary>Resistance to get data on</summary>
    </param>
    <return name="base" type="number">
      <summary>Base resistance value, for players their racial modifier.</summary>
    </return>
    <return name="resistance" type="number">
      <summary>Current resistance with all modifiers applied.</summary>
    </return>
    <return name="positive" type="number">
      <summary>Positieve resistance modifiers.</summary>
    </return>
    <return name="negative" type="number">
      <summary>Negative resistance modifiers.</summary>
    </return>
  </function>
  <function name="IsInGuild" type="function">
    <summary>Returns whether or not the player is in a guild</summary>
    <return name="inGuild" type="number" apitype="1nil">
      <summary>1 if the player is in a guild, otherwise nil</summary>
    </return>
  </function>
  <function name="GetGamma" type="function">
    <summary>Returns the gamma value for the game client</summary>
    <return name="gamma" type="number">
      <summary>The gamma setting of the game client</summary>
    </return>
  </function>
  <function name="GetObjectiveText" type="function">
    <summary>Returns the objective text for the currently displayed quest</summary>
    <return name="questObjective" type="string">
      <summary>The objective text for the currently displayed quest</summary>
    </return>
  </function>
  <function name="StrafeLeftStop" type="function">
    <summary>Stops the character from strafing left.</summary>
  </function>
  <function name="GetNumIgnores" type="function">
    <summary>Returns the number of people currently on the player's ignore list</summary>
    <return name="numIgnores" type="number">
      <summary>The number of people currently on the ignore list</summary>
    </return>
  </function>
  <function name="TakeTaxiNode" type="function">
    <summary>Take the indicated flightpath. This function is used when clicking a flightpath from a flightmaster.</summary>
    <param name="slot" type="number">
      <summary>Taxi slot to take. (1 to NumTaxiNodes())</summary>
    </param>
  </function>
  <function name="StopMusic" type="function">
    <summary>Immediately stops the currently played in-game music</summary>
  </function>
  <function name="StopMacro" type="function">
    <summary>Stops execution of a running macro</summary>
  </function>
  <function name="SetOverrideBindingMacro" type="function">
    <summary>Sets an override binding to a specific macro</summary>
    <paramchoice>
      <param name="macroName" type="string">
        <summary>The name of a macro to set for the override binding, or nil to remove the binding</summary>
      </param>
      <param name="macroIndex" type="number">
        <summary>The index of a macro to set for the override binding, or nil to remove the binding</summary>
      </param>
    </paramchoice>
  </function>
  <function name="StartDuel" type="function">
    <summary>Challenges another player to a duel</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitId of the player to challenge</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of a player to challenge</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetScreenHeight" type="function">
    <summary>Returns the current screen height. This value is affected by scale. To get the true screen height in pixels divide by GetScreenHeightScale().</summary>
    <return name="height" type="number">
      <summary>Current screen height in pixels.</summary>
    </return>
  </function>
  <function name="StartAuction" type="function">
    <summary>Starts a new auction</summary>
    <param name="minBid" type="number">
      <summary>The minimum bid, in copper</summary>
    </param>
    <param name="buyoutPrice" type="number">
      <summary>The buyout price, in copper</summary>
    </param>
    <param name="runTime" type="number">
      <summary>The runtime of the auction, in minutes</summary>
    </param>
  </function>
  <function name="GetSummonConfirmSummoner" type="function">
    <summary>Returns the name of the summoner, so it can be displayed in the confirmation dialog</summary>
    <return name="text" type="string">
      <summary>The name of the summoner</summary>
    </return>
  </function>
  <function name="StartAttack" type="function">
    <summary>This function is used by Blizzard code to start an attack on a specific unit.</summary>
    <param name="target" type="string">
      <summary>The target you want to start attacking, can be a UnitId like "raid10target" or a unit's name</summary>
    </param>
  </function>
  <function name="GetNumWorldStateUI" type="function">
    <summary>Returns the number of world state lines (Arathi Basin Points, Black Morass Portals etc.)</summary>
    <return name="numUI" type="number">
      <summary>Returns the number of current world state lines.</summary>
    </return>
  </function>
  <function name="ExpandChannelHeader" type="function">
    <summary>Collapses a channel header in the chat channel listing</summary>
    <param name="id" type="number">
      <summary>The index of the header in the Chat Channel window.  These indices include the actually channel listings, so the second channel may be at a higher index, depending on how many channels are listed in the first header.</summary>
    </param>
  </function>
  <function name="GetCurrentDungeonDifficulty" type="function">
    <summary>Returns the currently dungeon difficulty level</summary>
    <return name="dungeonDifficulty" type="number">
      <summary>The currently dungeon difficulty setting</summary>
    </return>
  </function>
  <function name="KBArticle_IsLoaded" type="function">
    <summary>Returns whether or not the requested knowledge base article has been loaded</summary>
    <return name="isLoaded" type="boolean">
      <summary>true after the KNOWLEDGE_BASE_ARTICLE_LOAD_SUCCESS event has fired by fetching a specific article.  This value will be retained through reloading the user interface, selecting a new character.  It will be reset if the client is closed entirely</summary>
    </return>
  </function>
  <function name="GetQuestLink" type="function">
    <summary>Gets a quest link for the given entry in your quest log</summary>
    <param name="index" type="number">
      <summary>The quest log index for the desired link</summary>
    </param>
    <return name="link" type="string">
      <summary>The desired quest link</summary>
    </return>
  </function>
  <function name="IsConsumableAction" type="function">
    <summary>Returns 1 if the action id contains a consumable, otherwise nil.</summary>
    <param name="slot" type="number">
      <summary>The action id of the slot to be queried.</summary>
    </param>
    <return name="isConsumableAction" type="number" apitype="1nil">
      <summary>1 if the action is a consumable, otherwise nil</summary>
    </return>
  </function>
  <function name="GetAddOnCPUUsage" type="function">
    <summary>Returns the amount of CPU time used by the given addon, in milliseconds</summary>
    <param />
    <return name="usage" type="number">
      <summary>The amount of CPU time the given addon has used, in milliseconds</summary>
    </return>
  </function>
  <function name="StablePet" type="function">
    <summary>Attempts to put your current pet in the stable.</summary>
  </function>
  <function name="GetPackageInfo" type="function">
    <summary>Returns information on the given package.  Does not seem implemented by Blizzard, index 1 always returns a 'Test Package'.</summary>
    <param name="index" type="number">
      <summary>Package Index. Between 1 and GetNumPackages()</summary>
    </param>
    <return name="name" type="string">
      <summary>Package name</summary>
    </return>
    <return name="texture" type="string">
      <summary>Icon for this package</summary>
    </return>
    <return name="somenumber" type="number">
      <summary>??</summary>
    </return>
  </function>
  <function name="CloseGuildBankFrame" type="function">
    <summary>Closes the guild bank frame</summary>
  </function>
  <function name="MoveViewUpStart" type="function" />
  <function name="SpellCanTargetUnit" type="function">
    <summary>Returns whether or not the spell currently awaiting a target can target a given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="canTarget" type="number" apitype="1nil">
      <summary>1 if the spell currently awaiting targeting can target the given unit</summary>
    </return>
  </function>
  <function name="ItemTextPrevPage" type="function">
    <summary>Asks the game to move the currently open book, or other readable object to the previous page of text.</summary>
  </function>
  <function name="JoinTemporaryChannel" type="function">
    <summary>Joins a channel</summary>
    <param name="channel" type="string">
      <summary>The name of a channel to join</summary>
    </param>
  </function>
  <function name="SpellStopCasting" type="function">
    <summary>Stops casting or targeting the current spell</summary>
  </function>
  <function name="GetPetitionItemInfo" type="function">
    <summary>Returns information about a given petition to create an arena team.</summary>
    <param name="index" type="number">
      <summary>The index of the petition item</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the petition</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the petition's icon texture</summary>
    </return>
    <return name="price" type="number">
      <summary>The cost of the petition, in copper</summary>
    </return>
  </function>
  <function name="SpellIsTargeting" type="function">
    <summary>Returns whether or not there is a spell currently awaiting a target</summary>
    <return name="isTargeting" type="number" apitype="1nil">
      <summary>1 if there is a spell currently awaiting a target, otherwise nil</summary>
    </return>
  </function>
  <function name="SpellHasRange" type="function">
    <summary>Returns whether or not a given spell has a range restriction</summary>
    <paramchoice>
      <param name="spellName" type="string">
        <summary>The name of a spell</summary>
      </param>
      <param name="spellId" type="number">
        <summary>The spellId of a spell</summary>
      </param>
    </paramchoice>
    <return name="hasRange" type="number" apitype="1nil">
      <summary>1 if the specified spell has a range restriction, otherwise nil</summary>
    </return>
  </function>
  <function name="SpellTargetUnit" type="function">
    <summary>Targets a unit with the spell currently awaiting a target</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to target with the spell</summary>
    </param>
    <param name="name" type="string">
      <summary>The full name of the unit to target with the spell</summary>
    </param>
  </function>
  <function name="SpellCanTargetItem" type="function">
    <summary>Return whether or not the spell on the cursor can target an item or not.  Will return nil when no spell is on the cursor.</summary>
    <return name="canTarget" type="number" apitype="1nil">
      <summary>1 if the spell on the cursor can target an item, nil if not.</summary>
    </return>
  </function>
  <function name="Sound_GameSystem_GetOutputDriverNameByIndex" type="function">
    <summary>Returns the name of the given game sound output driver</summary>
    <param name="index" type="number">
      <summary>The desired index</summary>
    </param>
  </function>
  <function name="SelectTradeSkill" type="function">
    <summary>Sets the currently selected tradeskill item</summary>
    <param name="index" type="number">
      <summary>The index of a tradeskill in the tradeskill window</summary>
    </param>
  </function>
  <function name="Sound_ChatSystem_GetNumInputDrivers" type="function">
    <summary>Returns the number of chat system sound input drivers</summary>
  </function>
  <function name="GetQuestBackgroundMaterial" type="function">
    <summary>Returns the background material for a given quest</summary>
    <return name="material" type="string">
      <summary>The background material for the currently displayed quest.  Currently this returns nil, and defaults to "parchment" in the QuestFrame code</summary>
    </return>
  </function>
  <function name="GetNumMapLandmarks" type="function">
    <summary>Returns the number of point of interest on the world map</summary>
    <return name="numPOIs" type="number">
      <summary>The number of points of interest on the world map</summary>
    </return>
  </function>
  <function name="SortBattlefieldScoreData" type="function">
    <summary>Sorts the battlefield data based on a specific sortType</summary>
    <param name="sortType" type="string">
      <summary>The sort type for the battlefield score data</summary>
    </param>
  </function>
  <function name="PickupStablePet" type="function">
    <summary>Picks up a stabled pet, and holds it on the cursor</summary>
    <param name="index" type="number">
      <summary>The index of the pet</summary>
    </param>
  </function>
  <function name="GetRaidRosterInfo" type="function">
    <summary>Returns information about a member of the player's raid</summary>
    <param name="index" type="number">
      <summary>The index of the raid member</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the player</summary>
    </return>
    <return name="rank" type="number">
      <summary>The player's rank in the raid</summary>
    </return>
    <return name="subgroup" type="number">
      <summary>The raid subgroup that the player belongs to</summary>
    </return>
    <return name="level" type="number">
      <summary>The player's level</summary>
    </return>
    <return name="class" type="string">
      <summary>The localized name of the player's class</summary>
    </return>
    <return name="fileName" type="string">
      <summary>The uppercase english name of the player's class</summary>
    </return>
    <return name="zone" type="string">
      <summary>The name of the zone the player is currently in</summary>
    </return>
    <return name="online" type="number" apitype="1nil">
      <summary>1 if the player is currently online, otherwise nil</summary>
    </return>
    <return name="isDead" type="number" apitype="1nil">
      <summary>1 if the player is currently dead, otherwise nil</summary>
    </return>
    <return name="role" type="string">
      <summary>The player's role, or nil</summary>
    </return>
    <return name="isML" type="number" apitype="1nil">
      <summary>1 if the player is the master-looter, otherwise nil</summary>
    </return>
  </function>
  <function name="GetTalentInfo" type="function">
    <summary>Returns information about the talents of the player, or the currently inspected player.</summary>
    <param name="tabIndex" type="number">
      <summary>The index of the talen tree.</summary>
    </param>
    <param name="talentIndex" type="number">
      <summary>The index of the talent.</summary>
    </param>
    <param name="isInspect" type="number" apitype="1nil">
      <summary>1 if retrieving information from an inspected person, nil otherwise</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the talent.</summary>
    </return>
    <return name="iconTexture" type="string">
      <summary>The icon texture of the talent.</summary>
    </return>
    <return name="tier" type="number">
      <summary>The tier (row) of the talent.</summary>
    </return>
    <return name="column" type="number">
      <summary>The column of the talent.</summary>
    </return>
    <return name="rank" type="number">
      <summary>The current rank of the talent.</summary>
    </return>
    <return name="maxRank" type="number">
      <summary>The maximum rank of the talent.</summary>
    </return>
    <return name="isExceptional" type="number" apitype="1nil">
      <summary>1 if the selected talent is a ability you gain, nil otherwise.</summary>
    </return>
    <return name="meetsPrereq" type="number" apitype="1nil">
      <summary>1 if you meet the prerequisite to learn the talent, nil otherwise.</summary>
    </return>
  </function>
  <function name="tremove" type="function">
    <summary>This function is simply an alias for table.remove</summary>
  </function>
  <function name="ChannelUnmoderator" type="function">
    <summary>Revokes moderator status from a given player on a specific channel</summary>
    <param name="channel" type="string">
      <summary>The name of the channel</summary>
    </param>
    <param name="player" type="string">
      <summary>The player to revoke moderator status from</summary>
    </param>
  </function>
  <function name="IsRightShiftKeyDown" type="function">
    <summary>Returns whether or not the right shift key on the keyboard is held down</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if the right shift key on the keyboard is currently held down</summary>
    </return>
  </function>
  <function name="RetrieveCorpse" type="function">
    <summary>Confirms ressurection by returning to the player's corpse</summary>
  </function>
  <function name="IsDisplayChannelOwner" type="function">
    <summary>Returns whether or not the player is the owner of the currently displayed channel</summary>
    <return name="isOwner" type="number" apitype="1nil">
      <summary>1 if the player is the owner of the currently displayed channel</summary>
    </return>
  </function>
  <function name="MusicPlayer_VolumeUp" type="function">
    <summary>Turns the volume up in iTunes</summary>
  </function>
  <function name="OpeningCinematic" type="function">
    <summary>Displays the player's race's opening cinematic.</summary>
  </function>
  <function name="SocketContainerItem" type="function">
    <summary>Opens the Gem Socketing UI if the given container slot has a socketable item</summary>
    <param name="index" type="number">
      <summary>Container ID</summary>
    </param>
    <param name="slot" type="number">
      <summary>Slot within container</summary>
    </param>
  </function>
  <function name="GetQuestLogRewardMoney" type="function">
    <summary>Returns the amount of money rewarded on quest completion.</summary>
    <return name="money" type="number">
      <summary>The amount of money rewarded on quest completion, in copper</summary>
    </return>
  </function>
  <function name="GetNumArenaTeamMembers" type="function">
    <summary>Returns the number of members in a given arena team</summary>
    <param name="teamindex" type="number">
      <summary>The index of the arena team, based on the order they are displayed in the PvP tab.</summary>
    </param>
    <param name="showOffline" type="number" apitype="1nil">
      <summary>1 to show offline members, otherwise nil. This argument is not working as of Patch 2.3</summary>
    </param>
  </function>
  <function name="SitStandOrDescendStart" type="function" />
  <function name="SilenceMember" type="function" />
  <function name="VoiceGetCurrentCaptureDevice" type="function">
    <summary>Returns the index of the current voice capture device</summary>
    <return name="index" type="number">
      <summary>The index of the current voice capture device</summary>
    </return>
  </function>
  <function name="CancelAreaSpiritHeal" type="function">
    <summary>Cancels resurrection if one is pending from a battleground spirit healer</summary>
  </function>
  <function name="ShowWorldMapArrowFrame" type="function" />
  <function name="ShowRepairCursor" type="function">
    <summary>Changes the cursor to show the repair cursor</summary>
  </function>
  <function name="HasPetUI" type="function">
    <summary>Returns whether or not the client should show the pet UI</summary>
    <return name="hasPetUI" type="number" apitype="1nil">
      <summary>1 if the client should show the pet UI</summary>
    </return>
    <return name="isHunterPet" type="number" apitype="1nil">
      <summary>1 if the player's pet is a hunter pet</summary>
    </return>
  </function>
  <function name="ShowInventorySellCursor" type="function">
    <summary>Changes the cursor to the "inventory sell" cursor</summary>
  </function>
  <function name="ShowFriends" type="function">
    <summary>Requests updated friends information from the server</summary>
  </function>
  <function name="ShowContainerSellCursor" type="function">
    <summary>Displays the "sell item" cursor for a given container item</summary>
    <param name="index" type="number">
      <summary>The index of a container</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot within the given container</summary>
    </param>
  </function>
  <function name="GetSpellLink" type="function">
    <summary>Gets a spell link for the player's given spell</summary>
    <paramchoice>
      <param name="spellID" type="number">
        <summary>The spell's ID</summary>
      </param>
      <param name="spellname" type="string">
        <summary>The spell's name. Must be in your spell book.</summary>
      </param>
    </paramchoice>
    <return name="link" type="string">
      <summary>The desired spell link</summary>
    </return>
  </function>
  <function name="GetAbandonQuestItems" type="function">
    <summary>Returns any items that would be destroyed by confirming abandoning the current quest</summary>
    <return name="items" type="string">
      <summary>Any items that would be destroyed by abandoning the given quest</summary>
    </return>
  </function>
  <function name="TradeSkillOnlyShowMakeable" type="function">
    <summary>Enables or disables the "Have Materials" tradeskill filter</summary>
    <param name="filter" type="boolean">
      <summary>nil, false or 0 to disable the "Have Materials" filter, any other value will enable it</summary>
    </param>
  </function>
  <function name="ShowBattlefieldList" type="function">
    <summary>Displays the battlefield list window for a previously queued battlefield</summary>
    <param name="index" type="number">
      <summary>The index of the battlefield currently queued for</summary>
    </param>
  </function>
  <function name="SetupFullscreenScale" type="function">
    <summary>Sizes a frame to take up the entire screen.  Sizes the frames differently depending on resolution.  Never returns a meaningful value.</summary>
    <param name="frame" type="table">
      <summary>Frame to resize to full screen</summary>
    </param>
  </function>
  <function name="GetChatWindowMessages" type="function">
    <summary>Returns a list of message events (leaving the CHAT_MSG_ part out) a given chatframe is registered for.</summary>
    <param name="index" type="number">
      <summary>Chat frame index.</summary>
    </param>
    <return name="...">
      <summary>List of message types.</summary>
    </return>
  </function>
  <function name="SetWhoToUI" type="function">
    <summary>Sets a flag that determines how the results of a SendWho() request are delivered.</summary>
    <param name="state" type="number">
      <summary>Determines how results of a SendWho() request should be handled</summary>
    </param>
  </function>
  <function name="SetWatchedFactionIndex" type="function">
    <summary>Sets the faction to watch reputation progress for</summary>
    <param name="index" type="number">
      <summary>The index of the faction to watch</summary>
    </param>
  </function>
  <function name="SetUIVisibility" type="function">
    <summary>Changes whether or not UI rendered models are shown</summary>
    <param name="visible">
      <summary>Any true value other than 0 to enable UI visibility.  False or nil will disable</summary>
    </param>
  </function>
  <function name="GetInventoryItemQuality" type="function">
    <summary>Returns the quality level of a given inventory item</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query.  This unit can be the player, or the currently inspected unit</summary>
    </param>
    <param name="slotId" type="string">
      <summary>An inventory slotId to query.  This id can be obtained by calling GetInventorySlotInfo() with a slot token</summary>
    </param>
    <return name="quality" type="number">
      <summary>The quality level of the item</summary>
    </return>
  </function>
  <function name="SetTrainerServiceTypeFilter" type="function">
    <summary>Sets the state of a filter in the trainer window</summary>
    <param name="type" type="string">
      <summary>The filter type to query</summary>
    </param>
    <param name="status" type="number" optional="true">
      <summary>The new status of the given filter</summary>
    </param>
    <param name="exclusive" type="number" optional="true">
      <summary>Turns off all other filters, if the filter is being enabled</summary>
    </param>
  </function>
  <function name="SetTradeSkillItemNameFilter" type="function">
    <summary>Sets the tradeskill item name filter search string</summary>
    <param name="text" type="string">
      <summary>The search string</summary>
    </param>
  </function>
  <function name="SetTradeSkillItemLevelFilter" type="function">
    <summary>Filters the TradeSkill window's list by required level of produced items.</summary>
    <param name="minLevel" type="number">
      <summary>Lowest required level of items to show in filtered TradeSkill list</summary>
    </param>
    <param name="maxLevel" type="number">
      <summary>Highest required level of items to show in filtered TradeSkill list</summary>
    </param>
  </function>
  <function name="LootSlot" type="function">
    <summary>Attempt to loot the item in the specified slot.</summary>
    <param name="slot" type="number">
      <summary>The slot to loot.</summary>
    </param>
  </function>
  <function name="SetTracking" type="function">
    <summary>Set minimap tracking to the given index between 1 and GetNumTrackingTypes().  Pass nil to track nothing.</summary>
    <param name="index" type="number">
      <summary>Tracking Index.  1 to GetNumTrackingTypes(). nil to track nothing.</summary>
    </param>
  </function>
  <function name="GetNumAvailableQuests" type="function">
    <summary>Returns the number of available quests at the current NPC</summary>
    <return name="numAvailableQuests" type="number">
      <summary>The number of available quests</summary>
    </return>
  </function>
  <function name="SetTexLodBias" type="function" />
  <function name="ResurrectHasTimer" type="function">
    <summary>Returns whether or not the player must wait to accept the pending resurrection spell</summary>
    <return name="hasTimer" type="number" apitype="1nil">
      <summary>1 if the player must wait to accept the pending resurrection spell, otherwise nil</summary>
    </return>
  </function>
  <function name="SetTaxiMap" type="function">
    <summary>Sets a texture to the TaxiMap texture</summary>
    <param name="texture" type="table">
      <summary>The texture to set</summary>
    </param>
  </function>
  <function name="GetText" type="function">
    <summary>Returns a formatted string from GlobalStrings.</summary>
    <param name="token" type="string">
      <summary>The name of the global string to format.</summary>
    </param>
    <param name="suffix" type="string">
      <summary>A suffix to add to the token before fetching the format string.</summary>
    </param>
    <param name="ordinal" type="number">
      <summary>Will replace %d in the string with this number.</summary>
    </param>
    <return name="text" type="string">
      <summary>Formatted global string.</summary>
    </return>
  </function>
  <function name="GetPVPTimer" type="function">
    <summary>Returns the amount of time until the player's PVP flag expires</summary>
    <return name="timer" type="number">
      <summary>If PVP is enabled, this value returns 300000.  If PVP is disabled, then this value will return -1, otherwise it is the number of milliseconds until the PVP flag turns off.</summary>
    </return>
  </function>
  <function name="KBSetup_GetArticleHeaderCount" type="function">
    <summary>Returns the number of "Top Issues" articles on the current page</summary>
    <return name="articleHeaderCount" type="number">
      <summary>The number of "Top Issues" articles on the current page</summary>
    </return>
  </function>
  <function name="GetPVPDesired" type="function">
    <summary>Returns whether or not the player has manually toggled the PVP flag on</summary>
    <return name="isPVPDesired" type="number">
      <summary>1 if the PVP flag was toggled on by the player manually, 0 otherwise</summary>
    </return>
  </function>
  <function name="SetSendMailMoney" type="function">
    <summary>Sets the amount of money to send with the next mail message</summary>
    <param name="amount" type="number">
      <summary>The amount of money to send in copper</summary>
    </param>
    <return name="success" type="number" apitype="1nil">
      <summary>1 if you have enough money (not including postage), otherwise nil</summary>
    </return>
  </function>
  <function name="SetSendMailCOD" type="function">
    <summary>Sets the COD cost of a mail being sent</summary>
    <param name="amount" type="number">
      <summary>The COD cost of the item being sent, in copper</summary>
    </param>
  </function>
  <function name="GetNumQuestChoices" type="function">
    <summary>Returns the number of quest choices the current npc has available</summary>
    <return name="numQuestChoices" type="number">
      <summary>The number of quest choices the current npc has available</summary>
    </return>
  </function>
  <function name="CollapseTrainerSkillLine" type="function">
    <summary>Collapses the given skill line in the class trainer frame</summary>
    <param name="index" type="number">
      <summary>The index of the skill line to collapse</summary>
    </param>
  </function>
  <function name="BuyPetition" type="function">
    <summary>Purchases a petition (used for arena charters)</summary>
    <param name="index" type="number">
      <summary>The index of the petition to purchase.  For purchashing arena charters, these are 1 for 2v2, 2 for 3v3 and 3 for 5v5.</summary>
    </param>
    <param name="name" type="string">
      <summary>The name to use for the petition</summary>
    </param>
  </function>
  <function name="GetNumShapeshiftForms" type="function">
    <summary>Returns the number of available shapeshift forms for the player</summary>
    <return name="numForms" type="number">
      <summary>The number of available shapeshift forms for the player</summary>
    </return>
  </function>
  <function name="SetLFMAutofill" type="function">
    <summary>Turns on the auto-fill option in the Looking For More interface</summary>
  </function>
  <function name="UnitBuff" type="function">
    <summary>Returns information about a buff on a given unit or player</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
      <param name="filter" type="number" apitype="1nil">
        <summary>1 to filter only buffs that can be cast by the player, otherwise nil</summary>
      </param>
    </paramchoice>
    <return name="name" type="string">
      <summary>The name of the buff</summary>
    </return>
    <return name="rank" type="string">
      <summary>The rank of the buff</summary>
    </return>
    <return name="icon" type="string">
      <summary>The path to the buff's icon texture</summary>
    </return>
    <return name="count" type="number">
      <summary>The number of stacks of the buff</summary>
    </return>
    <return name="duration" type="number">
      <summary>The full duration of the buff, in seconds</summary>
    </return>
    <return name="timeLeft" type="number">
      <summary>The amount of time left on the buff, in seconds</summary>
    </return>
  </function>
  <function name="GetPlayerTradeMoney" type="function">
    <summary>Returns the amount of money the player deposited in an open trade window.</summary>
    <return name="copper" type="number">
      <summary>The amount of the player's money (in copper) currently in the trade window.</summary>
    </return>
  </function>
  <function name="SetSelectedDisplayChannel" type="function">
    <summary>Selects the given display channel for use in other functions</summary>
    <param name="index" type="number">
      <summary>The index of the display channel to select</summary>
    </param>
  </function>
  <function name="NoPlayTime" type="function">
    <summary>Returns whether or not the player is out of playtime</summary>
    <return name="hasNoTime" type="number" apitype="1nil">
      <summary>1 if the player is out of playtime, otherwise nil</summary>
    </return>
  </function>
  <function name="GMSurveyAnswerSubmit" type="function">
    <summary>Submits an answer to a GM Survey question</summary>
    <param name="question" type="number">
      <summary>The index of the question being answered</summary>
    </param>
    <param name="rank" type="number">
      <summary>The rank selected</summary>
    </param>
    <param name="comment" type="string">
      <summary>A comment for the given question</summary>
    </param>
  </function>
  <function name="CommentatorRemovePlayer" type="function" />
  <function name="HasKey" type="function">
    <summary>Returns whether or not the player currently has a key.</summary>
    <return name="hasKey" type="number" apitype="1nil">
      <summary>Returns 1 if the player has a key, otherwise nil</summary>
    </return>
  </function>
  <function name="PickupSpell" type="function">
    <summary>Picks up a spell from the spellbook, placing it on the cursor</summary>
    <param name="id" type="number">
      <summary>The numeric ID of a spell in the spellbook.</summary>
    </param>
    <param name="bookType" type="string">
      <summary>The type of spellbook, either "spell" or "pet".</summary>
    </param>
  </function>
  <function name="GetNumBattlefieldFlagPositions" type="function">
    <summary>Returns the number of battlefield flags in the current zone.</summary>
    <return name="numFlags" type="number">
      <summary>The number of battlefield flags to display.</summary>
    </return>
  </function>
  <function name="GetContainerItemLink" type="function">
    <summary>Returns the item link of the item at a specific position in the players bags or bank.</summary>
    <param name="index" type="number">
      <summary>The index of the container to check.</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot of the container to check.</summary>
    </param>
    <return name="item" type="string">
      <summary>The item link of the item at the specified position.</summary>
    </return>
  </function>
  <function name="SelectStationery" type="function">
    <summary>Selects a given stationery for usage when sending mail</summary>
    <param name="index" type="number">
      <summary>The index of the stationery to select for usage.</summary>
    </param>
  </function>
  <function name="GetNumQuestWatches" type="function">
    <summary>Returns the number of quests currently marked for objective watching</summary>
    <return name="numWatches" type="number">
      <summary>The number of quests from the quest log currently marked for watching</summary>
    </return>
  </function>
  <function name="SetScreenResolution" type="function">
    <summary>Sets the screen resolution to a specified value.</summary>
    <param name="index" type="number">
      <summary>The index of the resolution to choose.  These values correspond to the returns from GetScreenResolutions().</summary>
    </param>
  </function>
  <function name="DeleteMacro" type="function">
    <summary>Deletes a macro by id</summary>
    <param name="id" type="number">
      <summary>The macro id. The id of the currently selected macro can be obtained on MacroFrame.selectedMacro.</summary>
    </param>
  </function>
  <function name="GetSelectedFaction" type="function">
    <summary>Returns the currently selected faction index</summary>
    <return name="factionIndex" type="number">
      <summary>The currently selected faction index</summary>
    </return>
  </function>
  <function name="GetGossipOptions" type="function">
    <summary>Returns the available gossip options for a given NPC</summary>
    <return name="text" type="string">
      <summary>The text of the gossip option</summary>
    </return>
    <return name="gossipType" type="string">
      <summary>A string indicating the type of gossip option</summary>
    </return>
    <return name="...">
      <summary>A repeating list of text and gossipType values for all available options</summary>
    </return>
  </function>
  <function name="SetRaidRosterSelection" type="function">
    <summary>Sets the currently selected raid roster unit.</summary>
    <param name="index" type="number">
      <summary>The raid index of the selected unit.  This is a value from 1 to GetNumRaidMembers().</summary>
    </param>
  </function>
  <function name="SetPortraitToTexture" type="function">
    <summary>Sets a portrait to a given texture.</summary>
    <param name="frameName" type="string">
      <summary>The global name of the portrait texture to be altered</summary>
    </param>
    <param name="texturePath" type="string">
      <summary>The path to the texture to be used</summary>
    </param>
  </function>
  <function name="GetNumSockets" type="function">
    <summary>Returns the number of sockets in the open item</summary>
    <return name="numSockets" type="number">
      <summary>The number of available sockets for the open item.</summary>
    </return>
  </function>
  <function name="PickupPetAction" type="function">
    <summary>Picks up the pet action in the given slot and places it under the cursor.</summary>
    <param name="slot" type="number">
      <summary>The index of the pet action on the pet's actionbar</summary>
    </param>
  </function>
  <function name="ExpandQuestHeader" type="function">
    <summary>Expands a quest header in the quest log</summary>
    <param name="index" type="number">
      <summary>The index of the quest log entry to expand.  If the index supplied is invalid, or not a quest header then this function will instead expand all quest headers. This index is separate from the quest indices such that regardless of how many quests you have showing in the quest log, index 2 will always be the second header.</summary>
    </param>
  </function>
  <function name="IsAuctionSortReversed" type="function">
    <summary>Returns whether or not a column in the auction house interface is reverse sorted or not.</summary>
    <param name="type" type="string">
      <summary>Type of the auction listing</summary>
    </param>
    <param name="sort" type="string">
      <summary>Colum that can be sorted on</summary>
    </param>
    <return name="isReversed" type="number" apitype="1nil">
      <summary>1 if the queried sort is reversed, nil otherwise</summary>
    </return>
    <return name="isSorted" type="number" apitype="1nil">
      <summary>1 if the queried sort has been sorted on, nil otherwise</summary>
    </return>
  </function>
  <function name="SetPetStablePaperdoll" type="function">
    <summary>Sets the given model to the currently selected stabled pet's model</summary>
    <param name="model" type="table">
      <summary>A model frame</summary>
    </param>
  </function>
  <function name="SetLookingForMore" type="function">
    <summary>Start looking for more members for the given activity type and index</summary>
    <param name="activityType" type="number">
      <summary>The type of activity. See the return values of GetLFGTypes() for valid indices.</summary>
    </param>
    <param name="activityIndex" type="number">
      <summary>The specific activity index to look for more members for. See the return values of GetLFGTypeEntries() for valid indices.</summary>
    </param>
  </function>
  <function name="SetPartyAssignment" type="function">
    <summary>Assigns a party role (maintank, mainassist) to a player or unit</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to assign a role</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to assign a role</summary>
      </param>
    </paramchoice>
  </function>
  <function name="DeclineLFGMatch" type="function" />
  <function name="SetPVP" type="function">
    <summary>Enables/Disables PVP for the player.</summary>
    <param name="state" type="number" apitype="1nil">
      <summary>1 to enable PVP, nil to disable</summary>
    </param>
  </function>
  <function name="GetSpellName" type="function">
    <summary>Returns the name and subtext of a given spellid</summary>
    <param name="spellid" type="number">
      <summary>The spellid to query</summary>
    </param>
    <param name="bookType" type="string">
      <summary>The type of spellbook</summary>
    </param>
    <return name="spellName" type="string">
      <summary>The name of the spell</summary>
    </return>
    <return name="subSpellName" type="string">
      <summary>The text displayed on the second line of the spellbook, such as "Rank 5", "Racial Passive", or "Artisan".</summary>
    </return>
  </function>
  <function name="StopCinematic" type="function">
    <summary>Stops a cinematic that is currently playing</summary>
  </function>
  <function name="GetNumQuestItems" type="function">
    <summary>Returns the number of items necessary to complete the active quest</summary>
    <return name="numRequiredItems" type="number">
      <summary>The number of required items to complete the quest</summary>
    </return>
  </function>
  <function name="ClearLookingForMore" type="function">
    <summary>Clears all active LFM requests, removing the player from the LFG queue</summary>
  </function>
  <function name="GetNumStablePets" type="function">
    <summary>Returns the number of stabled pets</summary>
    <return name="numPets" type="number">
      <summary>The number of stabled pets.  This value does not include your current pet.</summary>
    </return>
  </function>
  <function name="SetOverrideBindingClick" type="function">
    <summary>Sets an override binding that acts like a mouse click on a button.</summary>
    <param name="owner" type="table">
      <summary>The frame responsible for setting the override</summary>
    </param>
    <param name="isPriority" type="boolean">
      <summary>Indicates that this is a priority override binding</summary>
    </param>
    <param name="key" type="string">
      <summary>The key to bind to the button (e.g. "CTRL-2")</summary>
    </param>
    <param name="buttonName" type="string">
      <summary>The name of the button to which the key will be bound or nil to remove the override binding</summary>
    </param>
    <param name="mouseClick" type="string" optional="true">
      <summary>The mouse button sent to the button's OnClick handler</summary>
    </param>
  </function>
  <function name="VoiceChat_PlayLoopbackSound" type="function">
    <summary>Plays a previously recorded looback sound</summary>
  </function>
  <function name="CollapseQuestHeader" type="function">
    <summary>Collapses a header in the quest log</summary>
    <param name="index" type="number">
      <summary>The index of the quest header.  This index is separate from the quest indices such that regardless of how many quests you have showing in the quest log, index 2 will always be the second header.</summary>
    </param>
  </function>
  <function name="CommentatorStartInstance" type="function" />
  <function name="SendMail" type="function">
    <summary>Sends mail to a player</summary>
    <param name="target" type="string">
      <summary>The destinatination of the mail</summary>
    </param>
    <param name="subject" type="string">
      <summary>The subject of the mail</summary>
    </param>
    <param name="body" type="string">
      <summary>The body of the mail</summary>
    </param>
  </function>
  <function name="ConfirmReadyCheck" type="function">
    <summary>Sends your ready status to the raid leader when asked for a readycheck</summary>
    <param name="ready" type="number" apitype="1nil">
      <summary>1 if the player is ready, otherwise nil.</summary>
    </param>
  </function>
  <function name="CloseGuildRegistrar" type="function">
    <summary>Closes the guild registrar frame</summary>
  </function>
  <function name="SetMouselookOverrideBinding" type="function">
    <summary>Overrides the default mouselook bindings to perform another binding with the mouse buttons</summary>
    <param name="key" type="string">
      <summary>The mouselook key to override</summary>
    </param>
    <param name="binding" type="string">
      <summary>The binding to perform instead of mouselooking, or nil to clear the override</summary>
    </param>
  </function>
  <function name="TurnRightStart" type="function" />
  <function name="GetNumVoiceSessionMembersBySessionID" type="function">
    <summary>Returns the number of members in a voice channel</summary>
    <param name="sessionId" type="number">
      <summary>A unique session ID returned from ChannelPulloutRoster_GetSessionIDByName()</summary>
    </param>
    <return name="numMembers" type="number">
      <summary>The number of members in a given voice channel</summary>
    </return>
  </function>
  <function name="SetMapToCurrentZone" type="function">
    <summary>Sets the world map to the player's current zone</summary>
  </function>
  <function name="GuildControlSetRank" type="function">
    <summary>Sets the current rank in the guild control window</summary>
    <param name="rank" type="number">
      <summary>The numeric guild rank to edit.  The Guild Master rank is always 1</summary>
    </param>
  </function>
  <function name="GetTradeSkillCooldown" type="function">
    <summary>Returns the cooldown for a given trade skill</summary>
    <param name="index" type="number">
      <summary>The index of a trade skill</summary>
    </param>
    <return name="cooldown" type="number">
      <summary>The remaining cooldown of the tradeskill in seconds</summary>
    </return>
  </function>
  <function name="issecure" type="function">
    <summary>Returns whether or not the current execution path is secure</summary>
    <return name="secure" type="number" apitype="1nil">
      <summary>1 if the current execution path is secure, otherwise nil</summary>
    </return>
  </function>
  <function name="SetLootMethod" type="function">
    <summary>Sets the loot method when in a group or party. Requires leader.</summary>
    <param name="method" type="string">
      <summary>Method to use for loot distribution.</summary>
    </param>
    <param name="master" type="string">
      <summary>Name of the master looter</summary>
    </param>
  </function>
  <function name="PlaySoundFile" type="function">
    <summary>Plays a specified sound file.</summary>
    <param name="soundFile" type="string">
      <summary>A path to the sound file to be played</summary>
    </param>
  </function>
  <function name="ToggleSheath" type="function">
    <summary>Sheaths or unsheaths the player's hand-held items</summary>
  </function>
  <function name="SetSelectedMute" type="function">
    <summary>Selects the given muted player for use by other functions</summary>
    <param name="index" type="number">
      <summary>The index of the muted player to select</summary>
    </param>
  </function>
  <function name="tonumber" type="function" />
  <function name="SetLFGComment" type="function">
    <summary>Adds a comment to your listing in the LFG system</summary>
    <param name="comment" type="string">
      <summary>A comment to be shown with your listing in the LFG system</summary>
    </param>
  </function>
  <function name="UpdateInventoryAlertStatus" type="function" />
  <function name="GetSelectedMute" type="function">
    <summary>Returns the index of the selected muted player in the muted list</summary>
    <return name="selectedMute" type="number">
      <summary>The index of the selected muted player in the list of muted players</summary>
    </return>
  </function>
  <function name="GetReleaseTimeRemaining" type="function">
    <summary>Returns the amount of time left until the player is automatically released from their body</summary>
    <return name="timeleft" type="number">
      <summary>The amount of time left until the player is auto-released from their body</summary>
    </return>
  </function>
  <function name="CompleteQuest" type="function">
    <summary>Completes the current quest in a questgiver dialog.</summary>
  </function>
  <function name="ResetDisabledAddOns" type="function">
    <summary>Resets the enabled status of addons before the change is committed via a reload</summary>
  </function>
  <function name="GetContainerItemInfo" type="function">
    <summary>Returns information aboute an item in a container</summary>
    <param name="index" type="number">
      <summary>Container index to query.</summary>
    </param>
    <param name="slot" type="number">
      <summary>Slot within container to query.</summary>
    </param>
    <return name="texture" type="string">
      <summary>Texture path of the item.</summary>
    </return>
    <return name="itemCount" type="number">
      <summary>Number of items in the slot.</summary>
    </return>
    <return name="locked" type="number" apitype="1nil">
      <summary>1 if the item is locked, nil otherwise.  An item can become locked when splitting stacks or if the item is in the trade/mail/auction windows.</summary>
    </return>
    <return name="quality" type="number">
      <summary>Item quality indicator.</summary>
    </return>
    <return name="readable" type="number" apitype="1nil">
      <summary>1 if the item is readable, nil otherwise.  An item is readable when it is a book or scroll that can be read by right-clicking.</summary>
    </return>
  </function>
  <function name="GetCVar" type="function">
    <summary>Returns the value of a stored configuration variable</summary>
    <param name="cvar" type="string">
      <summary>The name of a configuration variable.  If an invalid CVar is passed to this function, it will cause a Lua error.</summary>
    </param>
    <return name="value">
      <summary>The stored value</summary>
    </return>
  </function>
  <function name="GetTexLodBias" type="function" />
  <function name="SetBindingSpell" type="function">
    <summary>Binds a spell directly to a key combination</summary>
    <param name="KEY" type="string">
      <summary>The key combination to bind the spell to</summary>
    </param>
    <param name="spellname" type="string">
      <summary>The name of a spell to bind</summary>
    </param>
  </function>
  <function name="CommentatorLookatPlayer" type="function" />
  <function name="SetGuildBankWithdrawLimit" type="function">
    <summary>Sets the amount of withdrawals allowed for the selected guild rank</summary>
    <param name="amount" type="number">
      <summary>The amount of items that can be withdrawn per day</summary>
    </param>
  </function>
  <function name="SetGuildBankText" type="function">
    <summary>Sets the info page text on the given guild bank tab</summary>
    <param name="tab" type="number">
      <summary>Guild bank tab to query.  Between 1 and GetNumGuildBankTabs().</summary>
    </param>
    <param name="&quot;text&quot;" type="string">
      <summary>The text to set</summary>
    </param>
  </function>
  <function name="KBSetup_GetCategoryCount" type="function">
    <summary>Returns the number of available knowledge base categories</summary>
    <return name="numCategories" type="number">
      <summary>The number of available knowledge base categories</summary>
    </return>
  </function>
  <function name="IsVoiceChatEnabled" type="function">
    <summary>Returns whether or not the voice chat system is enabled</summary>
    <return name="isEnabled" type="number" apitype="1nil">
      <summary>1 if the voice chat system is enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="SetGuildBankTabPermissions" type="function">
    <summary>Enables or disabled a specific guild bank tab permission</summary>
    <param name="tab" type="number">
      <summary>The index of a guild bank tab</summary>
    </param>
    <param name="permission" type="number">
      <summary>The index of the permission to enable/disable</summary>
    </param>
    <param name="enabled" type="number" apitype="1nil">
      <summary>1 to enable the permission, otherwise nil</summary>
    </param>
  </function>
  <function name="OfferPetition" type="function">
    <summary>Requests a signature from the targeted player</summary>
  </function>
  <function name="GetPetActionInfo" type="function">
    <summary>Returns information about a pet action</summary>
    <param name="index" type="number">
      <summary>The index of the pet action, on the pet's action bar</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the action</summary>
    </return>
    <return name="subtext" type="string">
      <summary>The subtext for the action (passive, Rank 1, etc.)</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the action's icon texture</summary>
    </return>
    <return name="isToken" type="number" apitype="1nil">
      <summary>1 if the name/texture were token strings such as PET_ACTION_ATTACK and PET_ATTACK_TEXTURE rather than raw name/texture</summary>
    </return>
    <return name="isActive" type="number" apitype="1nil">
      <summary>1 if the action is currently active, otherwise nil</summary>
    </return>
    <return name="autoCastAllowed" type="number" apitype="1nil">
      <summary>1 if autocast is allowed for the given action</summary>
    </return>
    <return name="autoCastEnabled" type="number" apitype="1nil">
      <summary>1 if autocast is enabled for the given action</summary>
    </return>
  </function>
  <function name="SetGamma" type="function">
    <summary>Sets the Gamma value for the video system</summary>
    <param name="value" type="number">
      <summary>The gamma value to set</summary>
    </param>
  </function>
  <function name="GetSummonConfirmTimeLeft" type="function">
    <summary>Returns time left in seconds until summon cancel. Will return 0 with no summon dialog up.</summary>
    <return name="timeleft" type="number">
      <summary>Time left in seconds until summon cancel.</summary>
    </return>
  </function>
  <function name="ForceQuit" type="function">
    <summary>Immediately exits World of Warcraft</summary>
  </function>
  <function name="SaveGuildRoster" type="function">
    <summary>Saves the guild roster GuildRoster.txt in the Logs folder.</summary>
  </function>
  <function name="GetBindingAction" type="function">
    <summary>Returns the action associated with the given key</summary>
    <param name="key" type="string">
      <summary>The key or key combination to query (e.g. "CTRL-2")</summary>
    </param>
    <param name="checkOverride" type="boolean" optional="true">
      <summary>Set to 1 or true if override bindings should be checked as well (defaults to false)</summary>
    </param>
    <return name="action" type="string">
      <summary>The action associated with the given key, or an empty string if no action was found</summary>
    </return>
  </function>
  <function name="GetCVarAbsoluteMin" type="function">
    <summary>Returns the absolute minimum value allowed for a given CVar</summary>
    <param name="cvar" type="string">
      <summary>The name of the CVar to query</summary>
    </param>
    <return name="min" type="number">
      <summary>The absolute minimum value allowed for the given CVar</summary>
    </return>
  </function>
  <function name="DoEmote" type="function">
    <summary>Executes a preset emote, with optional target</summary>
    <param name="emote" type="string">
      <summary>The emote to perform (does not include the '/')</summary>
    </param>
    <param name="target" type="string" optional="true">
      <summary>Name of a player or NPC to direct the emote at</summary>
    </param>
  </function>
  <function name="SetFactionInactive" type="function">
    <summary>Flags a faction as inactive</summary>
    <param name="index" type="number">
      <summary>The index of the faction in the faction list (including headers).</summary>
    </param>
  </function>
  <function name="GetUnitHealthRegenRateFromSpirit" type="function">
    <summary>Returns the amount of health gained per second while not in combat, as a result of spirit</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the character to query</summary>
      </param>
    </paramchoice>
    <return name="regen" type="number">
      <summary>The amount of health gained per second while not in combat</summary>
    </return>
  </function>
  <function name="UpdateAddOnMemoryUsage" type="function">
    <summary>Updates the addon memory usage information</summary>
  </function>
  <function name="SetCursor" type="function">
    <summary>Sets the cursor image.</summary>
    <param name="cursor" type="string">
      <summary>A cursor token listed below, the path to a 32x23 blp cursor image, or nil.  If nil is specified, any set cursor will be cleared.</summary>
    </param>
  </function>
  <function name="rawset" type="function" />
  <function name="DoReadyCheck" type="function">
    <summary>Perform a ready check</summary>
  </function>
  <function name="GetNumSpellTabs" type="function">
    <summary>Returns the number of spell tabs the player has available</summary>
    <return name="numTabs" type="number">
      <summary>The number of spell tabs</summary>
    </return>
  </function>
  <function name="IsBattlefieldArena" type="function">
    <summary>Returns whether or not the npc the player is interacting with can queue for arenas</summary>
    <return name="isArena" type="number" apitype="1nil">
      <summary>1 if the interacting npc can queue the player for arenas, nil otherwise</summary>
    </return>
  </function>
  <function name="SetConsoleKey" type="function" />
  <function name="SetChatWindowSize" type="function">
    <summary>Sets the value of the chat window's font size in chat-cache.txt</summary>
    <param name="index" type="number">
      <summary>The index of the chat window to modify</summary>
    </param>
    <param name="size" type="number">
      <summary>The font size for the chat window</summary>
    </param>
  </function>
  <function name="GetTrainerSkillLineFilter" type="function">
    <summary>Returns whether or not a trainer skill line filter is enabled</summary>
    <param name="index" type="number">
      <summary>The index of a skill line filter.  These are any of the major headings at a trainer, such as "Frost", "Fire" and "Arcae", or "Development Skills" and "Recipes"</summary>
    </param>
    <return name="isEnabled" type="number" apitype="1nil">
      <summary>1 if the given filter is enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="GetSendMailItem" type="function">
    <summary>Returns information on an item slot in the send mail frame.</summary>
    <param name="index" type="number">
      <summary>Index of the item in the send mail frame. Between 1 and ATTACHMENTS_MAX_SEND</summary>
    </param>
    <return name="itemName" type="string">
      <summary>Name of the attachment item</summary>
    </return>
    <return name="itemTexture" type="string">
      <summary>Texture of the attachment item</summary>
    </return>
    <return name="stackCount" type="string">
      <summary>Current stack size of the attachment item</summary>
    </return>
    <return name="quality" type="number">
      <summary>Item quality</summary>
    </return>
  </function>
  <function name="GetLFGTypes" type="function">
    <summary>Returns the type of possible LFG queries</summary>
    <return name="..." type="string">
      <summary>The type of looking for group queries, as a list of strings</summary>
    </return>
  </function>
  <function name="GetAuctionItemTimeLeft" type="function">
    <summary>Returns the time left for a given auction listing</summary>
    <param name="type" type="string">
      <summary>The type of auction listing</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the auction</summary>
    </param>
    <return name="duration" type="number">
      <summary>The amount of time left on the current auction</summary>
    </return>
  </function>
  <function name="RunMacroText" type="function" />
  <function name="SetChatWindowLocked" type="function">
    <summary>Locks a chat window, so it can't be dragged or resized.</summary>
    <param name="index" type="number">
      <summary>The index of the chat window</summary>
    </param>
    <param name="locked" type="number" apitype="1nil">
      <summary>1 to lock the window, nil to unlock</summary>
    </param>
  </function>
  <function name="IsAttackAction" type="function">
    <summary>Returns whether or not the given action flashes when engaged in melee auto-attacking.</summary>
    <param name="slot" type="number">
      <summary>The action slot to query</summary>
    </param>
    <return name="isAttack" type="number" apitype="1nil">
      <summary>1 if the action is a type of auto-attack, nil otherwise</summary>
    </return>
  </function>
  <function name="GetGuildRosterSelection" type="function">
    <summary>Returns the raid roster index of your currently selected guild member.</summary>
    <return name="index" type="number">
      <summary>The index of your currently selected guild member or 0 if none is selected.</summary>
    </return>
  </function>
  <function name="IsTitleKnown" type="function">
    <summary>Returns whether or not a given title is known (available) to the player</summary>
    <param name="titleId" type="number">
      <summary>A title index from 1 to GetNumTitles()</summary>
    </param>
    <return name="isKnown" type="number" apitype="1nil">
      <summary>1 if the title is known (available) to the player, otherwise nil</summary>
    </return>
  </function>
  <function name="LearnTalent" type="function">
    <summary>Learns the selected talent in the selected talent tree.</summary>
    <param name="tabIndex" type="number">
      <summary>The index of the talent tree.</summary>
    </param>
    <param name="talentIndex" type="number">
      <summary>The index of the talent.</summary>
    </param>
  </function>
  <function name="SetChatWindowAlpha" type="function">
    <summary>Sets the value of the chat window alpha in chat-cache.txt</summary>
    <param name="index" type="number">
      <summary>The index of the chat window to modify</summary>
    </param>
    <param name="alpha" type="number">
      <summary>The alpha value for the window (0.0 - 1.0)</summary>
    </param>
  </function>
  <function name="GetInspectArenaTeamData" type="function">
    <summary>Returns information about an inspect target's arena team</summary>
    <param name="index" type="number">
      <summary>The index of the arena team.  These are indexed from smallest to largest, with the first team (normally 2v2) being 1.</summary>
    </param>
    <return name="teamName" type="string">
      <summary>The name of the arena team</summary>
    </return>
    <return name="teamSize" type="number">
      <summary>The size of the team (2 for 2v2, 3 for 2v2, etc.)</summary>
    </return>
    <return name="teamRating" type="number">
      <summary>The team's rating</summary>
    </return>
    <return name="teamPlayed" type="number">
      <summary>The number of games played in the current arena period</summary>
    </return>
    <return name="teamWins" type="number">
      <summary>The number of games won in the current arena period</summary>
    </return>
    <return name="playerPlayed" type="number">
      <summary>The number of games the player has played in the current arena period</summary>
    </return>
    <return name="playerRating" type="number">
      <summary>The player's personal rating</summary>
    </return>
    <return name="bg_red" type="number">
      <summary>The red component color value for the background (0.0-1.0)</summary>
    </return>
    <return name="bg_green" type="number">
      <summary>The green component color value for the background (0.0-1.0)</summary>
    </return>
    <return name="bg_blue" type="number">
      <summary>The blue component color value for the background (0.0-1.0)</summary>
    </return>
    <return name="emblem" type="number">
      <summary>The index of the team's emblem graphic</summary>
    </return>
    <return name="emblem_red" type="number">
      <summary>The red component color value for the emblem (0.0-1.0)</summary>
    </return>
    <return name="emblem_green" type="number">
      <summary>The green component color value for the emblem (0.0-1.0)</summary>
    </return>
    <return name="emblem_blue" type="number">
      <summary>The blue component color value for the emblem (0.0-1.0)</summary>
    </return>
    <return name="border" type="number">
      <summary>The index of the team's border graphic</summary>
    </return>
    <return name="border_red" type="number">
      <summary>The red component color value for the border (0.0-1.0)</summary>
    </return>
    <return name="border_green" type="number">
      <summary>The green component color value for the border (0.0-1.0)</summary>
    </return>
    <return name="border_blue" type="number">
      <summary>The blue component color value for the border (0.0-1.0)</summary>
    </return>
  </function>
  <function name="GetSelectedStationeryTexture" type="function">
    <summary>Returns the currently selected stationery texture</summary>
    <return name="texture" type="string">
      <summary>The currently selected stationery texture</summary>
    </return>
  </function>
  <function name="SetChannelPassword" type="function">
    <summary>Sets a password on a custom chat channel</summary>
    <param name="name" type="string">
      <summary>The name of the channel to change</summary>
    </param>
    <param name="password" type="string">
      <summary>The password to set on the channel</summary>
    </param>
  </function>
  <function name="RepopMe" type="function">
    <summary>Will release your spirit and send you to the graveyard when dead.</summary>
  </function>
  <function name="GetAreaSpiritHealerTime" type="function">
    <summary>Returns the amount of time until a nearby battleground spirit healer resurrects all players in its area.</summary>
    <return name="timeleft" type="number">
      <summary>Seconds left before the area spirit heal is cast</summary>
    </return>
  </function>
  <function name="SetCVar" type="function">
    <summary>Sets the value of a configuration variable in config.wtf</summary>
    <param name="cvar" type="string">
      <summary>The name of the CVar to set</summary>
    </param>
    <param name="value">
      <summary>The value for the CVar</summary>
    </param>
    <param name="raiseEvent" type="string" optional="true">
      <summary>If set, this causes the CVAR_UPDATE event to be fired with this as its first argument (note that numbers work too)</summary>
    </param>
  </function>
  <function name="AscendStop" type="function">
    <summary>Called when the player releases the binding for Jump</summary>
  </function>
  <function name="SetGuildRosterSelection" type="function">
    <summary>Sets the selection in the guild roster</summary>
    <param name="index" type="number">
      <summary>The index in the guild roster</summary>
    </param>
  </function>
  <function name="GetNumQuestLeaderBoards" type="function">
    <summary>Returns the number of quest objectives for a given quest</summary>
    <param name="index" type="number" optional="true">
      <summary>The index of a quest in the quest log.  This will default to GetQuestLogSelection() if index isn't supplied</summary>
    </param>
    <return name="numObjectives" type="number">
      <summary>The number of trackable quest objectives</summary>
    </return>
  </function>
  <function name="SetBinding" type="function">
    <summary>Sets a key combination to a given binding.</summary>
    <param name="key" type="string">
      <summary>The name of a key or button to be bound.</summary>
    </param>
    <param name="command" type="string" optional="true">
      <summary>The command to be bound to the given key.  If not specified, the key binding will be unbound.</summary>
    </param>
    <return name="success" type="number" apitype="1nil">
      <summary>1 if the key binding (or unbinding) was successful, otherwise nil</summary>
    </return>
  </function>
  <function name="GetInventoryAlertStatus" type="function">
    <summary>Returns the durability level of a given inventory slot</summary>
    <param name="index" type="number">
      <summary>Inventory index to query.</summary>
    </param>
    <return name="status" type="number">
      <summary>Number 0,1 or 2 indicating alert status.</summary>
    </return>
  </function>
  <function name="CanGuildBankRepair" type="function">
    <summary>Returns whether or not the player can pay for repairs using guild bank funds</summary>
    <return name="canRepair" type="number" apitype="1nil">
      <summary>1 if the player is able to repair using guild bank funds, otherwise nil</summary>
    </return>
  </function>
  <function name="SetBattlefieldScoreFaction" type="function">
    <summary>Sets the faction of the battlefield scoreboard.</summary>
    <param name="faction" type="number">
      <summary>The faction to select.</summary>
    </param>
  </function>
  <function name="SetBaseMip" type="function">
    <summary>Sets the level of texture resolution rendered by the client</summary>
    <param name="value" type="number">
      <summary>The desired level of texture resolution rendered by the client</summary>
    </param>
  </function>
  <function name="SetBagPortraitTexture" type="function">
    <summary>Sets a texture to a circular rendering of the specified bag's icon</summary>
    <param name="texture" type="table">
      <summary>The texture object to change</summary>
    </param>
    <param name="slot" type="number">
      <summary>The bag slot used for the generated texture</summary>
    </param>
  </function>
  <function name="UnitIsCharmed" type="function">
    <summary>Returns whether or not a unit or player is currently charmed.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to query</summary>
      </param>
      <param name="fullname" type="string">
        <summary>The full name of the unit to query</summary>
      </param>
    </paramchoice>
    <return name="isCharmed" type="number" apitype="1nil">
      <summary>1 if the given unit is charmed, otherwise nil</summary>
    </return>
  </function>
  <function name="SetActionBarToggles" type="function">
    <summary>Configures the display of the additional ActionBars.</summary>
    <param name="SHOW_MULTI_ACTIONBAR_1" type="number" apitype="1nil">
      <summary>1 to show the bottom left ActionBar, nil otherwise</summary>
    </param>
    <param name="SHOW_MULTI_ACTIONBAR_2" type="number" apitype="1nil">
      <summary>1 to show the bottom right ActionBar, otherwise nil</summary>
    </param>
    <param name="SHOW_MULTI_ACTIONBAR_3" type="number" apitype="1nil">
      <summary>1 to show the right ActionBar, otherwise nil</summary>
    </param>
    <param name="SHOW_MULTI_ACTIONBAR_4" type="number" apitype="1nil">
      <summary>1 to show the second right ActionBar, otherwise nil</summary>
    </param>
    <param name="ALWAYS_SHOW_MULTIBARS" type="number" apitype="1nil">
      <summary>1 to always show the ActionBars, otherwise nil</summary>
    </param>
  </function>
  <function name="PetDismiss" type="function">
    <summary>Dismisses the currently controlled pet</summary>
  </function>
  <function name="GetTrackingInfo" type="function">
    <summary>Returns information about a given tracking option</summary>
    <param name="id" type="number">
      <summary>The tracking index to query</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the tracking option</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the tracking option's icon texture</summary>
    </return>
    <return name="active" type="number" apitype="1nil">
      <summary>1 if the tracking option is active, otherwise nil</summary>
    </return>
    <return name="category" type="string">
      <summary>The tracking option's category</summary>
    </return>
  </function>
  <function name="UnitGUID" type="function">
    <summary>Returns the given unit's globally unique identifier</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="guid" type="string">
      <summary>The desired GUID</summary>
    </return>
  </function>
  <function name="PetAggressiveMode" type="function">
    <summary>Sets your pet to agressive mode.</summary>
  </function>
  <function name="GetCurrentResolution" type="function">
    <summary>Returns the index of the current resolution</summary>
    <return name="index" type="number">
      <summary>The index of the current resolution</summary>
    </return>
  </function>
  <function name="VoiceChat_StopPlayingLoopbackSound" type="function">
    <summary>Stops the current playback of the loopback sound</summary>
  </function>
  <function name="GetQuestLogPushable" type="function">
    <summary>Determines if the currently selected quest can be shared with your party members.</summary>
    <return name="pushable" type="number" apitype="1nil">
      <summary>1 if the quest is shareable, nil otherwise</summary>
    </return>
  </function>
  <function name="GetRealNumPartyMembers" type="function">
    <summary>Returns the number of members in the player's "real" non-battleground party</summary>
    <return name="numMembers" type="number">
      <summary>The number of members in the player's actual party.  This function is necessary in order to distinguish between the player's actual party, and any parties they may belong to in a battleground/arena.</summary>
    </return>
  </function>
  <function name="SetMultisampleFormat" type="function">
    <summary>Sets the client's multisampling format</summary>
    <param name="index" type="number">
      <summary>The multisampling format's index</summary>
    </param>
  </function>
  <function name="GetManaRegen" type="function">
    <summary>Returns the mana regeneration statistics for the player. Return values are in mana per second.</summary>
    <return name="base" type="number">
      <summary>The amount of mana the player regens each tick while not casting</summary>
    </return>
    <return name="casting" type="number">
      <summary>The amount of mana the player regens each tick while casting</summary>
    </return>
  </function>
  <function name="SendChatMessage" type="function">
    <summary>Sends a chat message</summary>
    <param name="text" type="string">
      <summary>The message to be sent, maximum of 255 characters</summary>
    </param>
    <param name="type" type="string" optional="true">
      <summary>The type of chat message to be sent. Defaults to SAY</summary>
    </param>
    <param name="language" type="string" optional="true">
      <summary>The language to send the message in. Defaults to the common language for the faction (Common, for Alliance, Orcish for Horde)</summary>
    </param>
    <param name="channel" type="string" optional="true">
      <summary>The channel or player receiving the message for CHANNEL/WHISPER type communications. If sending to a channel, you must use the number. This field is required for CHANNEL/WHISPER type chats, and ignored for others</summary>
    </param>
  </function>
  <function name="SelectTrainerService" type="function">
    <summary>Selects the given trainer service in the class trainer frame</summary>
    <param name="index" type="number">
      <summary>The trainer service index to select</summary>
    </param>
  </function>
  <function name="Sound_GameSystem_GetInputDriverNameByIndex" type="function">
    <summary>Returns the name of the given game sound input driver</summary>
    <param name="index" type="number">
      <summary>The desired index</summary>
    </param>
  </function>
  <function name="SelectPackage" type="function">
    <summary>Not yet implemented</summary>
  </function>
  <function name="PutItemInBag" type="function">
    <summary>Attempts to place a item under the cursor inside the specified bag.</summary>
    <param name="bagId" type="number">
      <summary>The id of the target bag.</summary>
    </param>
    <return name="hadItem" type="number" apitype="1nil">
      <summary>1 if the cursor had a item, nil otherwise.</summary>
    </return>
  </function>
  <function name="GetQuestLogRequiredMoney" type="function">
    <summary>Returns the amount of money required for the selected quest</summary>
    <return name="money" type="number">
      <summary>The amount of required money for the selected quest</summary>
    </return>
  </function>
  <function name="UnitIsTappedByPlayer" type="function">
    <summary>Returns whether or not a unit is tapped by the player or their group.</summary>
    <param name="unit" type="string">
      <summary>The unit to be queried</summary>
    </param>
    <return name="isTapped" type="number" apitype="1nil">
      <summary>1 if the unit is tapped by the player, otherwise nil</summary>
    </return>
  </function>
  <function name="SelectGossipAvailableQuest" type="function">
    <summary>Selects the specified quest on the gossip frame for further processing.</summary>
    <param name="index" type="number">
      <summary>The index of the quest on the gossip frame.</summary>
    </param>
  </function>
  <function name="KBSetup_IsLoaded" type="function">
    <summary>Returns whether or not the knowledge base setup has loaded successfully</summary>
    <return name="isLoaded" type="boolean">
      <summary>
        This function returns true if the knowledge base setup has loaded successfully, otherwise it returns false.  This function has the following behavior:
        * On first login after opening the client, this function will return false until the knowledge base hass been opened, and the KNOWLEDGE_BASE_SETUP_LOAD_SUCCESS event has fired.
        * When reloading the UI or changing characters, the value will initially be true.  If the knowledge base UI is opened the value will be set to false on the UPDATE_GM_STATUS event and set to true again after KNOWLEDGE_BASE_SETUP_LOAD_SUCCESS
      </summary>
    </return>
  </function>
  <function name="SecureCmdOptionParse" type="function">
    <summary>Parses a secure command (macro, slash command) into an action and possible target</summary>
    <param name="cmd" type="string">
      <summary>A command to be parsed (typically the body of a macro, macrotext attribute or slash command</summary>
    </param>
    <return name="action" type="string">
      <summary>The action to take</summary>
    </return>
    <return name="target" type="string">
      <summary>The target to use for the given action, or nil</summary>
    </return>
  </function>
  <function name="GetTradeSkillInvSlots" type="function">
    <summary>Returns a list of inventory slots the current tradeskill can craft for</summary>
    <return name="..." type="string">
      <summary>A list of inventory slots the tradeskill is capable of creating items for.  These values are used to populate the slot dropdown in the tradeskill window</summary>
    </return>
  </function>
  <function name="GetActionAutocast" type="function">
    <summary>Returns information about autocast actions</summary>
    <param name="slot" type="number">
      <summary>The action slot to check</summary>
    </param>
    <return name="autocast1" type="number" apitype="1nil" />
    <return name="autocast2" type="number" apitype="1nil" />
  </function>
  <function name="SetFriendNotes" type="function">
    <summary>Sets a note on a member of your friends list</summary>
    <paramchoice>
      <param name="index" type="number">
        <summary>Numerical friend index (from 1 to GetNumFriends())</summary>
      </param>
      <param name="&quot;name&quot;" type="string">
        <summary>Name of friend to modify</summary>
      </param>
    </paramchoice>
  </function>
  <function name="SaveBindings" type="function">
    <summary>Saves the current keybindings set to disk</summary>
    <param name="set" type="number">
      <summary>Which keybindings set the current settings should be saved to.</summary>
    </param>
  </function>
  <function name="RunScript" type="function">
    <summary>Runs a string as a Lua script</summary>
    <param name="script" type="string">
      <summary>A Lua script to be run</summary>
    </param>
  </function>
  <function name="SetChatWindowName" type="function">
    <summary>Set the name for a chat window in chat-cache.txt</summary>
    <param name="index" type="number">
      <summary>The index of a chat window</summary>
    </param>
    <param name="name" type="string">
      <summary>The name to give the chat window</summary>
    </param>
  </function>
  <function name="RunMacro" type="function" />
  <function name="GetNumSkillLines" type="function">
    <summary>Returns the number of skills to be listed in the Skills window.</summary>
    <return name="numSkills" type="number">
      <summary>The number of skills the player currently knows.</summary>
    </return>
  </function>
  <function name="GetNumQuestRewards" type="function">
    <summary>Returns the number of quest rewards for completing a quest</summary>
    <return name="numQuestRewards" type="number">
      <summary>The number of quest rewards you are guaranteed to get upon completion of the currently displayed quest.</summary>
    </return>
  </function>
  <function name="RollOnLoot" type="function">
    <summary>Perform a type of roll (pass/need/greed) on a given loot</summary>
    <param name="lootIndex" type="number">
      <summary>The index of the loot to roll on</summary>
    </param>
    <param name="rollType" type="number">
      <summary>The roll action to perform</summary>
    </param>
  </function>
  <function name="ReturnInboxItem" type="function">
    <summary>Returns the given inbox item to its sender.</summary>
    <param name="index" type="number">
      <summary>Inbox item to return to sender.</summary>
    </param>
  </function>
  <function name="SortArenaTeamRoster" type="function">
    <summary>Sorts the selected arena team's roster by the given sort type</summary>
    <param name="sortType" type="string">
      <summary>The column to sort the roster by</summary>
    </param>
  </function>
  <function name="ResurrectHasSickness" type="function">
    <summary>Determines if using a spirit healer to resurrect will give you resurrection sickness.</summary>
    <return name="hasSickness" type="number" apitype="1nil">
      <summary>1 if resurrecting at the spirit healer will give you resurrection sickness, nil otherwise.</summary>
    </return>
  </function>
  <function name="NextView" type="function">
    <summary>Change the camera view to the next predefined camera angle.</summary>
  </function>
  <function name="RestartGx" type="function">
    <summary>Restart the client's graphic subsystem</summary>
  </function>
  <function name="GetNumAddOns" type="function">
    <summary>Returns the number of addons in the addon listing</summary>
    <return name="numEntrys" type="number">
      <summary>The number of addons in the addon listing</summary>
    </return>
  </function>
  <function name="ClearLFMAutofill" type="function">
    <summary>Stops the LFM interface from auto-adding members to your group</summary>
  </function>
  <function name="DisableSpellAutocast" type="function">
    <summary>Disables auto-cast for a given pet spell</summary>
    <param name="spell" type="string">
      <summary>The name of a pet spell</summary>
    </param>
  </function>
  <function name="RequestInspectHonorData" type="function">
    <summary>Requests honor data for the currently inspected target</summary>
  </function>
  <function name="AddOrDelMute" type="function">
    <summary>Adds or removes a player/unit from the voice mute list</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to mute</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to mute</summary>
      </param>
    </paramchoice>
  </function>
  <function name="RequestBattlefieldScoreData" type="function">
    <summary>Requests the latest battlefield score from the server. The score is not directly returned by the function call, it'll dispatch the UPDATE_BATTLEFIELD_SCORE event instead.</summary>
  </function>
  <function name="strupper" type="function">
    <summary>This function is simply an alias for string.upper</summary>
  </function>
  <function name="ReportPlayerIsPVPAFK" type="function">
    <summary>Reports a player or unit as AFK in a PVP battleground</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>The name of the player to report</summary>
      </param>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unit to report</summary>
      </param>
    </paramchoice>
  </function>
  <function name="AcceptXPLoss" type="function">
    <summary>Confirms the loss of 25% durability when resurrecting at the spirit healer, without confirmation</summary>
  </function>
  <function name="GetTradeSkillRecipeLink" type="function">
    <summary>Returns an item link for a tradeskill recipe</summary>
    <param name="index" type="number">
      <summary>The index of the trade skill recipe</summary>
    </param>
    <return name="link" type="string">
      <summary>A link for the given item recipe</summary>
    </return>
  </function>
  <function name="ReplaceTradeEnchant" type="function">
    <summary>Confirms the replacement of an existing enchant being applied in the trade window</summary>
  </function>
  <function name="ClickStablePet" type="function">
    <summary>Simulates a click on the given stable pet index</summary>
    <param name="index" type="number">
      <summary>The index of the stable slot.</summary>
    </param>
    <return name="selected" type="number" apitype="1nil">
      <summary>1 if the function selected a stabled pet, rather than placed a pet in the stable slot</summary>
    </return>
  </function>
  <function name="UnitIsFeignDeath" type="function">
    <summary>Returns whether or not a given unit is feigning death</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="isFeign" type="number" apitype="1nil">
      <summary>1 if the unit is feigning death, otherwise nil</summary>
    </return>
  </function>
  <function name="RepairAllItems" type="function">
    <summary>Attempts to repair all items.  Requires the player to be at a merchant that repairs.  Passing 1 to the function will attempt to make use of guild bank money for repairs.</summary>
    <param name="useGuildMoney" type="number" apitype="1nil">
      <summary>1 to try and use guild bank money to repair, nil to use your own money</summary>
    </param>
  </function>
  <function name="RemoveFriend" type="function">
    <summary>Removes a friend from your friend's list</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>The name of a friend to remove</summary>
      </param>
      <param name="index" type="number">
        <summary>The index of an entry in the friends list</summary>
      </param>
    </paramchoice>
  </function>
  <function name="RemoveChatWindowMessages" type="function">
    <summary>Hides a group of messages from a chat frame</summary>
    <param name="index" type="number">
      <summary>The index of the chat frame (1-7)</summary>
    </param>
    <param name="messageGroup" type="string">
      <summary>The identifying string for the given message group</summary>
    </param>
  </function>
  <function name="MovieRecording_ToggleGUI" type="function">
    <summary>Toggles recording of the user interface when recording a video.</summary>
  </function>
  <function name="MovieRecording_SearchUncompressedMovie" type="function">
    <summary>Enables or disables a search for uncompressed movies</summary>
    <param name="enable" type="boolean">
      <summary>true to enable searching for uncompressed movies, false to end the running search</summary>
    </param>
  </function>
  <function name="RemoveChatWindowChannel" type="function">
    <summary>Removes a chat chanel from the given </summary>
    <param name="index" type="number">
      <summary>The index of the chat frame</summary>
    </param>
    <param name="channel" type="string">
      <summary>The name of the channel to remove</summary>
    </param>
  </function>
  <function name="ReloadUI" type="function">
    <summary>Reloads the user interface</summary>
  </function>
  <function name="GetAttackPowerForStat" type="function">
    <summary>Calculates the amount of attack power that your current character would gain from having the given value for the specified stat.</summary>
    <param name="statIndex" type="number">
      <summary>The index of the stat to query</summary>
    </param>
    <param name="effectiveStat" type="number">
      <summary>The value of the stat to use in the attack power calculation</summary>
    </param>
    <return name="attackPower" type="number">
      <summary>The amount of attack power your character would gain from having the given amount of the selected stat</summary>
    </return>
  </function>
  <function name="GuildInfo" type="function">
    <summary>Queries the server for the player's guild information</summary>
  </function>
  <function name="TaxiNodeGetType" type="function">
    <summary>Returns the type of the Taxi Node slot requested.</summary>
    <param name="slot" type="number">
      <summary>TaxiNode slot on the current Taxi Map. Between 1 and NumTaxiNodes().</summary>
    </param>
    <return name="type" type="string">
      <summary>Type of the Taxi Node.</summary>
    </return>
  </function>
  <function name="GetGuildBankTabInfo" type="function">
    <summary>Returns information about a given guild bank tab.</summary>
    <param name="tab" type="number">
      <summary>The index of a guild bank tab</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the guild tab</summary>
    </return>
    <return name="icon" type="string">
      <summary>The path to the tab's icon texture</summary>
    </return>
    <return name="isViewable" type="number" apitype="1nil">
      <summary>1 if the guild tab is viewable, otherwise nil</summary>
    </return>
    <return name="canDeposit" type="number" apitype="1nil">
      <summary>1 if the player can deposit into the guild bank tab</summary>
    </return>
    <return name="numWithdrawals" type="number">
      <summary>The maximum number of withdrawals the player can do in the tab</summary>
    </return>
    <return name="remainingWithdrawals" type="number">
      <summary>The number of withdrawals the player can make in the tab</summary>
    </return>
  </function>
  <function name="ReadFile" type="function" />
  <function name="IsHelpfulItem" type="function">
    <summary>Returns whether or not the item is helpful</summary>
    <paramchoice>
      <param name="itemID" type="number">
        <summary>An item's ID</summary>
      </param>
      <param name="itemName" type="string">
        <summary>An item's name</summary>
      </param>
      <param name="itemLink" type="string">
        <summary>An item's link</summary>
      </param>
    </paramchoice>
    <return name="helpful" type="number" apitype="1nil">
      <summary>1 if the item is helpful, nil for invalid or non-helpful items.</summary>
    </return>
  </function>
  <function name="GetExistingSocketLink" type="function">
    <summary>Returns an item link for a socketed gem.</summary>
    <param name="index" type="number">
      <summary>The index of the item socket to query</summary>
    </param>
    <return name="link" type="string">
      <summary>The item link of the gem already in the given socket</summary>
    </return>
  </function>
  <function name="CommentatorSetMode" type="function" />
  <function name="RandomRoll" type="function">
    <summary>Rolls a random number between min and max</summary>
    <param name="min" type="thread">
      <summary>The minimum amount to roll</summary>
    </param>
    <param name="max" type="thread">
      <summary>The maximum amount to roll</summary>
    </param>
  </function>
  <function name="QuestChooseRewardError" type="function">
    <summary>Triggers the client's error when the player hasn't chosen a quest reward from the available choices</summary>
  </function>
  <function name="IsAutoRepeatSpell" type="function">
    <summary>Returns whether or not the given spell is an auto-repeat spell</summary>
    <param name="spellName" type="string">
      <summary>The name of the spell to query</summary>
    </param>
    <return name="isAutoRepeat" type="number" apitype="1nil">
      <summary>If the spell is an auto-repeating spell</summary>
    </return>
  </function>
  <function name="QueryGuildBankText" type="function">
    <summary>Queries the server for the info text of the specified guild bank tab</summary>
    <param name="tab" type="number">
      <summary>Guild bank tab to query.  Between 1 and GetNumGuildBankTabs().</summary>
    </param>
  </function>
  <function name="GetTradeSkillReagentItemLink" type="function">
    <summary>Returns the item link for a tradeskill's reagent</summary>
    <param name="skillIdx" type="number">
      <summary>The index of the skill to be queried</summary>
    </param>
    <param name="reagentIdx" type="number">
      <summary>The index of the reagent</summary>
    </param>
    <return name="link" type="string">
      <summary>The item link of the given reagent for a tradeskill</summary>
    </return>
  </function>
  <function name="CombatLogSetCurrentEntry" type="function">
    <summary>Sets the combat log cursor to the given index</summary>
    <param name="index" type="number">
      <summary>The target entry</summary>
    </param>
    <param name="ignoreFilter" type="boolean">
      <summary>Uses the entire unfiltered combat log history if true</summary>
    </param>
  </function>
  <function name="QueryGuildBankTab" type="function">
    <summary>Queries the server for the contents of the specified guildbank tab.</summary>
    <param name="tab">
      <summary>Guild bank tab to query.  Between 1 and GetNumGuildBankTabs().</summary>
    </param>
  </function>
  <function name="ConfirmLootRoll" type="function">
    <summary>Confirms a loot roll for a given item that will be bound to your character if you win the roll</summary>
    <param name="lootIndex" type="number">
      <summary>The index of the loot to roll on</summary>
    </param>
    <param name="rollType" type="number">
      <summary>The roll action to confirm</summary>
    </param>
  </function>
  <function name="BuyMerchantItem" type="function">
    <summary>Purchases an item available from a merchant, without confirmation</summary>
    <param name="index" type="number">
      <summary>The index of an item available at the merchant</summary>
    </param>
    <param name="quantity" type="number">
      <summary>The number of items to purchase</summary>
    </param>
  </function>
  <function name="GetRunningMacroButton" type="function">
    <summary>Returns the mouse button that was used to activate the running macro</summary>
    <return name="button" type="string">
      <summary>The mouse button that was used to activate the macro.  If the macro was triggered by a keybinding the mouse button will be "LeftButton".</summary>
    </return>
  </function>
  <function name="GetBaseMip" type="function">
    <summary>Returns the level of texture resolution rendered by the client</summary>
    <return name="baseMip" type="number">
      <summary>The level of texture resolution rendered by the client</summary>
    </return>
  </function>
  <function name="PositionMiniWorldMapArrowFrame" type="function" />
  <function name="CameraOrSelectOrMoveStart" type="function">
    <summary>Called when left-clicking in the 3-D world</summary>
  </function>
  <function name="GetHonorCurrency" type="function">
    <summary>Returns the number of honor points available to purchase rewards</summary>
    <return name="honorPoints" type="number">
      <summary>The number of honor points available to purchase rewards</summary>
    </return>
  </function>
  <function name="GetChannelList" type="function">
    <summary>Returns the list of channels the player currently belongs to</summary>
    <return name="channel" type="string">
      <summary>The name of the channel</summary>
    </return>
    <return name="index" type="number">
      <summary>The index of the channel</summary>
    </return>
    <return name="...">
      <summary>A list of results</summary>
    </return>
  </function>
  <function name="KBSetup_GetSubCategoryCount" type="function">
    <summary>Returns the number of available subcategories for a given category</summary>
    <param name="index" type="number">
      <summary>The index of the category</summary>
    </param>
    <return name="numSubCategories" type="number">
      <summary>The number of available subcategories</summary>
    </return>
  </function>
  <function name="SetLookingForGroup" type="function">
    <summary>Sets one of the three looking for group slots</summary>
    <param name="slot" type="number">
      <summary>The index of a slot in the LFG tab of the Looking For Group system.  There are three slots available, so this value should be a number 1 - 3.</summary>
    </param>
    <param name="type" type="number">
      <summary>The index of a type as listed from GetLFGTypes()</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of a dungeon/quest entry as listed from GetLFGTypeEntries().</summary>
    </param>
  </function>
  <function name="CommentatorToggleMode" type="function" />
  <function name="CameraZoomIn" type="function">
    <summary>Zooms the camera in a specified distance</summary>
    <param name="distance" type="number">
      <summary>The distance to zoom in</summary>
    </param>
  </function>
  <function name="GetMerchantItemMaxStack" type="function">
    <summary>Determines how many of a merchant item you can purchase in one transaction</summary>
    <param name="index" type="number">
      <summary>The merchant index of the desired merchant item</summary>
    </param>
    <return name="maxStack" type="number">
      <summary>The largest quantity of the item you can purchase at once</summary>
    </return>
  </function>
  <function name="PlaySound" type="function">
    <summary>Plays a sound file. You have to specify the relative path from the WoW main directory.</summary>
    <param name="sound" type="string">
      <summary>The sound file to play.</summary>
    </param>
  </function>
  <function name="PlayMusic" type="function">
    <summary>Plays a music file</summary>
    <param name="musicfile" type="string">
      <summary>The path to a music file.  This can be a path in the MPQ files, or a file located within an addon directory.</summary>
    </param>
  </function>
  <function name="UnitIsFriend" type="function">
    <summary>Returns whether or not two units are friendly</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The first unit to query</summary>
    </param>
    <param name="otherUnit" type="string" apitype="unitid">
      <summary>The second unit to query</summary>
    </param>
    <return name="isFriends" type="number" apitype="1nil">
      <summary>1 if the two units are friends, otherwise nil</summary>
    </return>
  </function>
  <function name="PlaceAction" type="function">
    <summary>Places the action held on the cursor in a specified action bar slot</summary>
    <param name="slot" type="number">
      <summary>Places the action held on the cursor in a specific action bar slot</summary>
    </param>
  </function>
  <function name="PitchUpStart" type="function" />
  <function name="DestroyTotem" type="function">
    <summary>Destroys the totem of the given element</summary>
    <param name="slot" type="number">
      <summary>The element of the totem you want to destroy</summary>
    </param>
  </function>
  <function name="PickupTradeMoney" type="function">
    <param name="amount" type="number">
      <summary>The amount of money to take from the trade window.</summary>
    </param>
  </function>
  <function name="SetSelectedAuctionItem" type="function">
    <summary>Selects a specific item in the auction house</summary>
    <param name="type" type="string">
      <summary>The type of auction house listing</summary>
    </param>
  </function>
  <function name="GetTrainerSelectionIndex" type="function">
    <summary>Returns the currently selected index in the trainer window</summary>
    <return name="selectionIndex" type="number">
      <summary>The currently selected index in the trainer window</summary>
    </return>
  </function>
  <function name="PetWait" type="function">
    <summary>Orders the player's pet into "Stay" mode.</summary>
  </function>
  <function name="PetStopAttack" type="function">
    <summary>Stops your pet auto-attacking.</summary>
  </function>
  <function name="DemoteAssistant" type="function">
    <summary>Demotes the given player from raid assistant status</summary>
    <param name="name" type="string">
      <summary>The name of the player</summary>
    </param>
  </function>
  <function name="PetHasActionBar" type="function">
    <summary>Returns whether or not the player's current pet has an action bar</summary>
    <return name="hasActionBar" type="number" apitype="1nil">
      <summary>Returns 1 if the player's current pet has an action bar, otherwise nil</summary>
    </return>
  </function>
  <function name="MouselookStop" type="function">
    <summary>Disables mouse-look mode, where cursor movement rotates the camera</summary>
  </function>
  <function name="GetLootMethod" type="function">
    <summary>Retrieves information about the groups loot setting.</summary>
    <return name="lootMethod" type="string">
      <summary>The currently active loot method.</summary>
    </return>
    <return name="partyMaster" type="number">
      <summary>The party unit id of the player currently being the loot master.</summary>
    </return>
    <return name="raidMaster" type="number">
      <summary>The raid unit id of the player currently being the loot master.</summary>
    </return>
  </function>
  <function name="PetCanBeRenamed" type="function">
    <summary>Returns whether or not the currently controlled pet can be renamed</summary>
    <return name="canRename" type="number" apitype="1nil">
      <summary>1 if the player can rename the currently controlled pet, otherwise nil</summary>
    </return>
  </function>
  <function name="PetCanBeAbandoned" type="function">
    <summary>Returns whether or not the player's pet can be abandoned</summary>
    <return name="canAbandon" type="number" apitype="1nil">
      <summary>1 if the player's pet can be abandoned, otherwise nil</summary>
    </return>
  </function>
  <function name="GetOwnerAuctionItems" type="function">
    <summary>Queries the server for a page of self-posted auctions.</summary>
    <param name="page" type="number">
      <summary>Which page of self-posted auctions to query.</summary>
    </param>
  </function>
  <function name="PetAttack" type="function">
    <summary>Instructs your pet to attack your current target. Requires a keypress</summary>
  </function>
  <function name="DeclineResurrect" type="function">
    <summary>Declines a resurrection spell</summary>
  </function>
  <function name="PetAbandon" type="function">
    <summary>Releases the players current pet back into freedom.</summary>
  </function>
  <function name="SocketInventoryItem" type="function">
    <summary>Opens the socketing UI for the given inventory item, if it has sockets</summary>
    <param name="slot" type="number">
      <summary>An inventory slot Id</summary>
    </param>
  </function>
  <function name="GetBattlefieldTimeWaited" type="function">
    <summary>Returns the amount of time the player has queued for the given battleground, in milliseconds</summary>
    <param name="index" type="number">
      <summary>The index of a battleground or arena as listed in the tooltip for the minimap battle status icon.</summary>
    </param>
    <return name="timeInQueue" type="number">
      <summary>The amount of time the player has been in a queue for the given battlefield, in milliseconds</summary>
    </return>
  </function>
  <function name="OpenTrainer" type="function">
    <summary>Closes the trainer window if it is open, otherwise appears to do nothing</summary>
  </function>
  <function name="CanSendLFGQuery" type="function">
    <summary>Returns whether or not the player can submit a LFG/LFM request for the given type and index</summary>
    <param name="type" type="number">
      <summary>The type of LFG query.  The valid values can be obtained from GetLFGTypes()</summary>
    </param>
    <param name="index" type="number">
      <summary>The specific LFG dungeon/quest index.  The valid values can be obtained from GetLFGTypeEntries()</summary>
    </param>
    <return name="canSend" type="boolean">
      <summary>true if the player can submit a LFG query for the given type/index, otherwise false</summary>
    </return>
  </function>
  <function name="OffhandHasWeapon" type="function">
    <summary>Determines whether the player has a weapon in the offhand slot</summary>
    <return name="hasWeapon" type="number" apitype="1nil">
      <summary>1 if the player has a weapon equipped in the offhand, nil otherwise</summary>
    </return>
  </function>
  <function name="SetGuildBankTabInfo" type="function">
    <summary>Sets the name and icon for a guild bank tab</summary>
    <param name="tab" type="number">
      <summary>The index of a guild bank tab</summary>
    </param>
    <param name="name" type="string">
      <summary>The name for the tab</summary>
    </param>
    <param name="iconIndex" type="number">
      <summary>The index of the icon to display.  This should be a number between 1 and GetNumMacroItemIcons()</summary>
    </param>
  </function>
  <function name="NumTaxiNodes" type="function">
    <summary>Returns the current number of taxi nodes defined.</summary>
    <return name="num_nodes" type="number">
      <summary>Number of nodes.</summary>
    </return>
  </function>
  <function name="ItemTextGetMaterial" type="function">
    <summary>Returns the texture for the current book/parchement being displayed in the ItemTextFrame. A return value of 'nil' means 'Parchment' is being used.</summary>
    <return name="material" type="string">
      <summary>Texture for the current book/parchment being displayed.</summary>
    </return>
  </function>
  <function name="NotifyInspect" type="function">
    <summary>Queries the server for an inspected unit's talent information</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to inspect</summary>
    </param>
  </function>
  <function name="MusicPlayer_PlayPause" type="function">
    <summary>Plays or pauses playback in iTunes</summary>
  </function>
  <function name="SummonFriend" type="function">
    <summary>internal</summary>
  </function>
  <function name="MovieRecording_MaxLength" type="function">
    <summary>Returns the maximum length of a recorded video</summary>
    <param name="width" type="number">
      <summary>The width in pixels of the video resolution</summary>
    </param>
    <param name="framerate" type="number">
      <summary>The framerate of the resulting video</summary>
    </param>
    <param name="capturesound" type="number" apitype="1nil">
      <summary>1 to capture sound, otherwise nil</summary>
    </param>
    <return name="time" type="string">
      <summary>The maximum length of a recorded video as a string (HH:MM:SS)</summary>
    </return>
  </function>
  <function name="GetNewSocketInfo" type="function">
    <summary>Returns information about a gem that would be socketed</summary>
    <param name="index" type="number">
      <summary>The socket index</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the gem that would be socketed</summary>
    </return>
    <return name="icon" type="string">
      <summary>The path to the new gem's icon texture</summary>
    </return>
    <return name="gemMatchesSocket" type="number" apitype="1nil">
      <summary>1 if the gem being socketed matches the socket color, otherwise nil</summary>
    </return>
  </function>
  <function name="ClosePetStables" type="function">
    <summary>Closes the Pet Stable UI window</summary>
  </function>
  <function name="ClosePetitionVendor" type="function">
    <summary>Closes the petition vendor window</summary>
  </function>
  <function name="RegisterForSave" type="function">
    <summary>Registers a variable to be saved between sessions</summary>
  </function>
  <function name="GetTalentLink" type="function">
    <summary>Gets a spell link for the given talent</summary>
    <param name="tabIndex" type="number">
      <summary>The tab of the talent (1-3)</summary>
    </param>
    <param name="talentIndex" type="number">
      <summary>The index of the talent (from 1 to GetNumTalents(tabIndex))</summary>
    </param>
    <param name="isInspect" type="boolean" optional="true">
      <summary>Determines the target of the request</summary>
    </param>
    <return name="link" type="string">
      <summary>The desired spell link</summary>
    </return>
  </function>
  <function name="MovieRecording_DeleteMovie" type="function">
    <summary>Deletes a movie currently pending compression</summary>
    <param name="filename" type="string">
      <summary>The full path to a movie's filename</summary>
    </param>
  </function>
  <function name="MoveViewUpStop" type="function" />
  <function name="UnitIsTrivial" type="function">
    <summary>Returns whether or not the given unit is trivial</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <return name="isTrivial" type="number" apitype="1nil">
      <summary>1 if the unit is considered trivial, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumLootItems" type="function">
    <summary>Returns the number of items available to be looted</summary>
    <return name="numItems" type="number">
      <summary>The number of the items available to be looted</summary>
    </return>
  </function>
  <function name="MoveViewOutStop" type="function" />
  <function name="GetNewSocketLink" type="function">
    <summary>Returns an item link for a gem to be socketed</summary>
    <param name="index" type="number">
      <summary>The index of the item socket to query</summary>
    </param>
    <return name="link" type="string">
      <summary>The item link of the gem to be set in the given socket</summary>
    </return>
  </function>
  <function name="GetSelectedIgnore" type="function">
    <summary>Returns the currently selected index in the ignore listing</summary>
    <return name="index" type="number">
      <summary>The currently selected ignore index</summary>
    </return>
  </function>
  <function name="GetOptOutOfLoot" type="function">
    <summary>Returns `1` if you are opting out of loot, otherwise `nil`.</summary>
  </function>
  <function name="DisableAllAddOns" type="function">
    <summary>Flags all addons as disabled for the current character</summary>
  </function>
  <function name="MoveViewOutStart" type="function" />
  <function name="ChangeChatColor" type="function">
    <summary>Changes the color of a message type in the chat windows</summary>
    <param name="messageType" type="string">
      <summary>The message type, as listed in chat-cache.txt.  Example values are "SAY" and "CHANNEL1".</summary>
    </param>
    <param name="red" type="number">
      <summary>The value of the red component color (0.0 - 1.0)</summary>
    </param>
    <param name="green" type="number">
      <summary>The value of the green component color (0.0 - 1.0)</summary>
    </param>
    <param name="blue" type="number">
      <summary>The value of the blue component color (0.0 - 1.0)</summary>
    </param>
  </function>
  <function name="GetMerchantItemCostInfo" type="function">
    <summary>Returns the cost of a merchant item, in honor points, arena points, and marks</summary>
    <param name="index" type="number">
      <summary>The index of the item to query</summary>
    </param>
    <return name="honorPoints" type="number">
      <summary>The cost of the item, in honor points</summary>
    </return>
    <return name="arenaPoints" type="number">
      <summary>The cost of the item, in arena points</summary>
    </return>
    <return name="itemCount" type="number">
      <summary>The cost of the item, in some item currency</summary>
    </return>
  </function>
  <function name="MoveViewLeftStop" type="function" />
  <function name="CancelTradeAccept" type="function">
    <summary>Cancels a trade that is currently pending accepting by the other party</summary>
  </function>
  <function name="MoveViewInStop" type="function" />
  <function name="TogglePlayerBounds" type="function" />
  <function name="ShowMerchantSellCursor" type="function">
    <summary>Shows the merchant "sell item" cursor</summary>
  </function>
  <function name="PetDefensiveMode" type="function">
    <summary>Sets the pet into defensive mode, only attacking when the player or itself is attacked</summary>
  </function>
  <function name="MouselookStart" type="function">
    <summary>Enables mouse-look mode, where cursor movement rotates the camera</summary>
  </function>
  <function name="SetTradeSkillInvSlotFilter" type="function">
    <summary>Enables or disables an inventory slot filter in the tradeskill window</summary>
    <param name="index" type="number">
      <summary>The index of an inventory slot filter</summary>
    </param>
    <param name="enable" type="number" apitype="1nil" optional="true">
      <summary>1 to enable the filter, otherwise nil</summary>
    </param>
    <param name="exclusive" type="number" apitype="1nil" optional="true">
      <summary>1 to enable the filter exclusively, otherwise nil</summary>
    </param>
  </function>
  <function name="LoggingCombat" type="function">
    <summary>Toggle combat logging to Logs/WoWCombatLog.txt. Toggle = true to turn on logging, Toggle = false to turn off logging, nil to query logging status.</summary>
    <param name="toggle" type="boolean">
      <summary>Toggle on or off, defaults to nil.</summary>
    </param>
    <return name="isLogging" type="number" apitype="1nil">
      <summary>Chat logging flag.</summary>
    </return>
  </function>
  <function name="UnitHasRelicSlot" type="function">
    <summary>Returns whether or not the queried unit has a relic slot.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="hasRelic" type="number" apitype="1nil">
      <summary>1 if the unit has a relic slot, nil if not.</summary>
    </return>
  </function>
  <function name="GetNumTrackingTypes" type="function">
    <summary>Returns the number of available tracking types</summary>
    <return name="count" type="number">
      <summary>The number of available tracking types</summary>
    </return>
  </function>
  <function name="LoadAddOn" type="function">
    <summary>Loads an AddOn manually if it is Load on Demand. Will also load the dependencies of an AdddOn.</summary>
    <paramchoice>
      <param name="index" type="number">
        <summary>AddOn index between 1 and GetNumAddOns().  Blizzard addons cannot be loaded by index.</summary>
      </param>
      <param name="name" type="string">
        <summary>Name of the add on to load. Not case-sensitive.  Uses teh addon folder name, not the titel from the TOC.</summary>
      </param>
    </paramchoice>
    <return name="loaded" type="number">
      <summary>1 is the addon is loaded, nil otherwise</summary>
    </return>
    <return name="reason" type="string">
      <summary>Will contain the reason when an addon fails to load</summary>
    </return>
  </function>
  <function name="CancelSkillUps" type="function" />
  <function name="LeaveParty" type="function">
    <summary>Call this function to leave the current party or raid</summary>
  </function>
  <function name="LeaveChannelByName" type="function">
    <summary>Leaves a channel by name</summary>
    <param name="name" type="string">
      <summary>The channel to leave</summary>
    </param>
  </function>
  <function name="GetMerchantNumItems" type="function">
    <summary>Returns the total number of items a merchant has to sell</summary>
    <return name="numMerchantItems" type="number">
      <summary>The number of items a merchant has to sell</summary>
    </return>
  </function>
  <function name="GetBindingByKey" type="function">
    <summary>Returns the actions bound to a specific key combination</summary>
    <param name="key" type="string">
      <summary>The key or key combination to query (e.g. "CTRL-2")</summary>
    </param>
    <return name="action" type="string">
      <summary>The action currently bound to the key combination</summary>
    </return>
  </function>
  <function name="LeaveBattlefield" type="function">
    <summary>Exits the current battleground</summary>
  </function>
  <function name="KBSystem_GetServerStatus" type="function">
    <summary>Returns the knowledge base server system status message</summary>
    <return name="statusMessage" type="string">
      <summary>The knowledge base server status message, or nil</summary>
    </return>
  </function>
  <function name="ItemTextGetItem" type="function">
    <summary>Returns the name of the currently viewed ItemText item</summary>
    <return name="text" type="string">
      <summary>The name of the currently viewed item</summary>
    </return>
  </function>
  <function name="GetNumGossipAvailableQuests" type="function">
    <summary>Returns the number of available quests in the gossip window</summary>
    <return name="num" type="number">
      <summary>The number of available quests in the gossip window</summary>
    </return>
  </function>
  <function name="CloseQuest" type="function">
    <summary>Closes the open quest frame</summary>
  </function>
  <function name="KBSystem_GetMOTD" type="function">
    <summary>Returns the currently knowledgebase MOTD</summary>
    <return name="text" type="string">
      <summary>The message of the day for the knowledge base system</summary>
    </return>
  </function>
  <function name="GetGuildBankMoneyTransaction" type="function">
    <summary>Returns information from the guildbank money log.</summary>
    <param name="index" type="number">
      <summary>Index in the money log.</summary>
    </param>
    <return name="type" type="string">
      <summary>Type of the log event</summary>
    </return>
    <return name="name" type="string">
      <summary>Player who did the withdrawal/deposit/repair.  'nil' for Unknown entries.</summary>
    </return>
    <return name="year" type="number">
      <summary>Amount of years ago this event occured.</summary>
    </return>
    <return name="month" type="number">
      <summary>Amount of months ago this event occured.</summary>
    </return>
    <return name="day" type="number">
      <summary>Amount of days ago this event occured.</summary>
    </return>
    <return name="hour" type="number">
      <summary>Amount of hours ago this event occured.</summary>
    </return>
  </function>
  <function name="CheckInteractDistance" type="function">
    <summary>Returns whether or not the player is close enough to interact with a unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <param name="distIndex" type="number">
      <summary>The distance to check</summary>
    </param>
    <return name="canInteract" type="number" apitype="1nil">
      <summary>1 if the player can perform the given interaction with the given unit, otherwise nil</summary>
    </return>
  </function>
  <function name="CommentatorGetNumMaps" type="function" />
  <function name="GetAddOnInfo" type="function">
    <summary>Returns information about an addon in the client's addon list</summary>
    <paramchoice>
      <param name="index" type="number">
        <summary>The index of the AddOn, must be in the range of 1 to GetNumAddOns().</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the AddOn, as it appears in its folder name.</summary>
      </param>
    </paramchoice>
    <return name="name" type="string">
      <summary>The name of the addon</summary>
    </return>
    <return name="title" type="string">
      <summary>The title of the addon</summary>
    </return>
    <return name="notes" type="string">
      <summary>The value of the "Notes" field from the table of contents</summary>
    </return>
    <return name="enabled" type="number" apitype="1nil">
      <summary>1 if the addon is enabled for the current character, otherwise nil</summary>
    </return>
    <return name="loadable" type="number" apitype="1nil">
      <summary>If the addon is capable of being loaded</summary>
    </return>
    <return name="reason" type="string">
      <summary>If the addon isn't loadable, what is the reason</summary>
    </return>
    <return name="security" type="string">
      <summary>"SECURE" if the addon is secure, otherwise "INSECURE".  A "secure" addon is one that is released by Blizzard and is digitally signed</summary>
    </return>
  </function>
  <function name="SelectActiveQuest" type="function">
    <summary>Selects an active quest in the QuestLog frame</summary>
    <param name="index" type="number">
      <summary>The index of a quest in the QuestFrame</summary>
    </param>
  </function>
  <function name="GetNumLFGResults" type="function">
    <summary>Returns the number of results from a LFG query</summary>
    <param name="type" type="number">
      <summary>The type of LFGQuery, obtained from GetLFGTypes()</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of a LFG entry, obtained from GetLFGTypeEntries()</summary>
    </param>
    <return name="numResults" type="number">
      <summary>The number of results available</summary>
    </return>
    <return name="totalCount" type="number">
      <summary>The total number of results</summary>
    </return>
  </function>
  <function name="GetInventoryItemCount" type="function">
    <summary>Returns the number of items stacked in an inventory slot</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query.  This is typically "player" but this function also works for units that are being inspected</summary>
    </param>
    <param name="slotid" type="number">
      <summary>The inventory slot id</summary>
    </param>
    <return name="count" type="number">
      <summary>The amount of items stacked in the current inventory slot</summary>
    </return>
  </function>
  <function name="CanEditPublicNote" type="function">
    <summary>Returns whether or not the player can edit public notes</summary>
    <return name="canEdit" type="number" apitype="1nil">
      <summary>1 if the player can edit public notes, otherwise nil</summary>
    </return>
  </function>
  <function name="GetDebugStats" type="function" />
  <function name="GetMerchantItemInfo" type="function">
    <summary>Returns information about an item available at a merchant</summary>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
    <return name="price" type="number">
      <summary>The price of the item, in copper</summary>
    </return>
    <return name="quantity" type="number">
      <summary>The number of items per stack</summary>
    </return>
    <return name="numAvailable" type="number">
      <summary>The number of items available for purchase</summary>
    </return>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the item is usable, otherwise nil</summary>
    </return>
    <return name="extendedCost" type="number" apitype="1nil">
      <summary>1 if the item has an extended cost (alternate currency) such as arena or honor points</summary>
    </return>
  </function>
  <function name="UpdateWorldMapArrowFrames" type="function" />
  <function name="PlayerHasSpells" type="function">
    <summary>Returns whether the player has any spells.  Effectively always returns 1 for all characters.</summary>
    <return name="hasSpells" type="number" apitype="1nil">
      <summary>Returns 1 if the player has any spells, nil otherwise.</summary>
    </return>
  </function>
  <function name="GetArenaCurrency" type="function">
    <summary>Returns the number of available arena currency points</summary>
    <return name="points" type="number">
      <summary>The number of available arena currency points</summary>
    </return>
  </function>
  <function name="GetAuctionItemInfo" type="function">
    <summary>Returns information about an item up for auction</summary>
    <param name="type" type="string">
      <summary>The auction listing type to query</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the item in the listing</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
    <return name="count" type="number">
      <summary>The number of items in the stack</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality level of the item</summary>
    </return>
    <return name="canUse" type="number" apitype="1nil">
      <summary>1 if the item can be used by the player, otherwise nil</summary>
    </return>
    <return name="level" type="number">
      <summary>The level of the item</summary>
    </return>
    <return name="minBid" type="number">
      <summary>The minimum bid required, in copper</summary>
    </return>
    <return name="minIncrement" type="number">
      <summary>The minimum required incremental bid, in copper</summary>
    </return>
    <return name="buyoutPrice" type="number">
      <summary>The buyout price, in copper</summary>
    </return>
    <return name="bidAmount" type="number">
      <summary>The current highest bid, or 0 if no one has bid</summary>
    </return>
    <return name="highestBidder" type="number" apitype="1nil">
      <summary>1 if the player is currently the highest bidder, otherwise nil</summary>
    </return>
    <return name="owner" type="string">
      <summary>The owner of the auction</summary>
    </return>
  </function>
  <function name="IsEquippedAction" type="function">
    <summary>Returns whether or not an action slot contains an equipped item.</summary>
    <param name="slot" type="number">
      <summary>The action bar slot</summary>
    </param>
    <return name="isEquipped" type="number" apitype="1nil">
      <summary>1 if the slot has an equipped item, otherwise nil</summary>
    </return>
  </function>
  <function name="GetSpellInfo" type="function">
    <summary>Returns a wide range of information about the given spell</summary>
    <paramchoice>
      <param name="spellID" type="number">
        <summary>The spell's ID</summary>
      </param>
      <param name="spellName" type="string">
        <summary>The spell's name. Must be in your spell book.</summary>
      </param>
    </paramchoice>
    <return name="name" type="string">
      <summary>The spell's name</summary>
    </return>
    <return name="rank" type="string">
      <summary>The rank of the spell (e.g."Rank 5", "Racial", etc.)</summary>
    </return>
    <return name="icon" type="string">
      <summary>The file path for the spell's icon</summary>
    </return>
    <return name="powerCost" type="number">
      <summary>The amount of mana, rage, energy, or focus required to cast the spell</summary>
    </return>
    <return name="isFunnel" type="boolean">
      <summary>True for spells with health funneling effects (like Health Funnel)</summary>
    </return>
    <return name="powerType" type="number">
      <summary>The type of power used to cast the spell</summary>
    </return>
    <return name="castingTime" type="number">
      <summary>The casting time of the spell in milliseconds</summary>
    </return>
    <return name="minRange" type="number">
      <summary>The minimum range from the target required to cast the spell</summary>
    </return>
    <return name="maxRange" type="number">
      <summary>The maximum range from the target at which you can cast the spell</summary>
    </return>
  </function>
  <function name="SetLFGType" type="function">
    <summary>Sets a filter for the LFG system in a specific slot</summary>
    <param name="slot" type="number">
      <summary>The slot to select (1-3)</summary>
    </param>
    <param name="type" type="number">
      <summary>The type of LFG query to select.  Valid options can be obtained by indexing the reuslts of GetLFGTypes()</summary>
    </param>
  </function>
  <function name="IsLoggedIn" type="function">
    <summary>Returns whether or not the PLAYER_LOGIN event has already fired.</summary>
    <return name="loggedIn" type="number" apitype="1nil">
      <summary>1 if the PLAYER_LOGIN even has already happened, otherwise nil</summary>
    </return>
  </function>
  <function name="GetQuestLogTimeLeft" type="function">
    <summary>Returns the amount of time left on the current timed quest</summary>
    <return name="questTimer" type="number">
      <summary>The amount of time left on the current timed quest</summary>
    </return>
  </function>
  <function name="ClickAuctionSellItemButton" type="function">
    <summary>Causes the item currently being held by the cursor to be placed in the Auction House "Create Auction" item slot</summary>
  </function>
  <function name="KBSetup_GetArticleHeaderData" type="function">
    <summary>Returns header information about a "Top Issue" article</summary>
    <param name="index" type="number">
      <summary>The index of the article to query</summary>
    </param>
    <return name="articleId" type="number">
      <summary>A unique articleId for the article</summary>
    </return>
    <return name="title" type="string">
      <summary>The title of the article</summary>
    </return>
    <return name="isHotIssue" type="boolean">
      <summary>true if the article is a "Hot Issue", otherwise false</summary>
    </return>
    <return name="isRecentlyUpdated" type="boolean">
      <summary>true if the article has been recently updated, otherwise false</summary>
    </return>
  </function>
  <function name="GetNumStationeries" type="function">
    <summary>Returns the number of available stationeries</summary>
    <return name="numStationeries" type="number">
      <summary>The number of available stationeries</summary>
    </return>
  </function>
  <function name="CloseBattlefield" type="function">
    <summary>Closes the battlefield selection UI.</summary>
  </function>
  <function name="CombatLogClearEntries" type="function">
    <summary>Clears all current combat log entries.</summary>
  </function>
  <function name="SetOptOutOfLoot" type="function">
    <summary>Sets whether to opt out of random loot</summary>
    <param name="flag" type="boolean">
      <summary>The setting to make</summary>
    </param>
  </function>
  <function name="GetShapeshiftFormCooldown" type="function">
    <summary>Returns cooldown information about a given shapeshift slot</summary>
    <param name="slot" type="number">
      <summary>The shapeshift slot to query for cooldown information</summary>
    </param>
    <return name="start" type="number">
      <summary>The value of GetTime() at the moment the cooldown began, or 0</summary>
    </return>
    <return name="duration" type="number">
      <summary>The length of the cooldown, or 0</summary>
    </return>
    <return name="enable" type="number">
      <summary>1 if the cooldown is enabled, otherwise 0</summary>
    </return>
  </function>
  <function name="GetTradeSkillReagentInfo" type="function">
    <summary>Returns information about tradeskill recipe's reagent</summary>
    <param name="reagentName" type="string">
      <summary>The name of the reagent</summary>
    </param>
    <param name="reagentTexture" type="string">
      <summary>The path to the reagent's icon texture</summary>
    </param>
    <param name="reagentCount" type="number">
      <summary>The number of required reagents</summary>
    </param>
    <param name="playerReagentCount" type="number">
      <summary>The number of reagents the player currently possesses</summary>
    </param>
    <return name="index" type="number">
      <summary>The index of the tradeskill recipe</summary>
    </return>
    <return name="reagentIndex" type="number">
      <summary>The index of the reagent to the tradeskill recipe</summary>
    </return>
  </function>
  <function name="GetMasterLootCandidate" type="function">
    <summary>Returns information about a given loot candidate</summary>
    <param name="index" type="number">
      <summary>party or raid index. 1-4 for party, 1-40 for raid.</summary>
    </param>
    <return name="candidate" type="string">
      <summary>Name of the candidate</summary>
    </return>
  </function>
  <function name="GetNumBuybackItems" type="function">
    <summary>Returns the number of items available on the buyback tab</summary>
    <return name="numBuybackItems" type="number">
      <summary>The number of items available to be re-purchased</summary>
    </return>
  </function>
  <function name="JoinBattlefield" type="function">
    <summary>Queues for a specific battlefield, optionally as a group</summary>
    <param name="index" type="number">
      <summary>The index of the specific battlefield to join.  A value of 0 will join the first available battlefield.</summary>
    </param>
    <param name="asGroup" type="number" apitype="1nil">
      <summary>1 will queue your entire group for the chosen battlefield, otherwise only the player will be queued.</summary>
    </param>
  </function>
  <function name="KBQuery_GetArticleHeaderData" type="function">
    <summary>Returns information about an article returned in a knowledge base query</summary>
    <param name="index" type="number">
      <summary>The index of the article to query</summary>
    </param>
    <return name="articleId" type="number">
      <summary>A unique articleId for the article</summary>
    </return>
    <return name="title" type="string">
      <summary>The title of the article</summary>
    </return>
    <return name="isHotIssue" type="boolean">
      <summary>true if the article is a "Hot Issue", otherwise false</summary>
    </return>
    <return name="isRecentlyUpdated" type="boolean">
      <summary>true if the article has been recently updated, otherwise false</summary>
    </return>
  </function>
  <function name="MoveViewRightStart" type="function">
    <summary>Starts your camera orbiting around you to the right (counterclockwise).</summary>
  </function>
  <function name="KBQuery_GetArticleHeaderCount" type="function">
    <summary>Returns the number of articles on the current knowledge base search result page</summary>
    <return name="articleHeaderCount" type="number">
      <summary>The number of articles on the current knowledge base search result base page</summary>
    </return>
  </function>
  <function name="IsSwimming" type="function">
    <summary>This function returns whether or not the player is currently swimming.</summary>
    <return name="isSwimming" type="number" apitype="1nil">
      <summary>1 if the player is currently swimming, otherwise nil</summary>
    </return>
  </function>
  <function name="SetAbandonQuest" type="function">
    <summary>Marks the currently selected quest to be abandoned.</summary>
  </function>
  <function name="CancelAuction" type="function">
    <summary>Cancels an auction that has been placed by the player</summary>
    <param name="index" type="number">
      <summary>The index of the auction in the "owner" listing</summary>
    </param>
  </function>
  <function name="MoveAndSteerStart" type="function" />
  <function name="TakeInboxItem" type="function">
    <summary>Takes an attachment from an inbox item without confirmation</summary>
    <param name="messageIndex" type="number">
      <summary>The index of the message</summary>
    </param>
    <param name="attachIndex" type="number">
      <summary>The index of the attachment</summary>
    </param>
  </function>
  <function name="ArenaTeamRoster" type="function">
    <summary>Queries the server for roster information about an Arena team</summary>
    <param name="team" type="number">
      <summary>The index of the team to be queried</summary>
    </param>
  </function>
  <function name="GetArenaTeamRosterSelection" type="function">
    <summary>Returns the currently selected arena team member for a given team</summary>
    <param name="team" type="number">
      <summary>The index of an arena team</summary>
    </param>
    <return name="index" type="number">
      <summary>The currently selected arena team member</summary>
    </return>
  </function>
  <function name="IsIgnoredOrMuted" type="function">
    <summary>Returns a true value if the queried unit is currently ignored or muted by the player</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>unit to query</summary>
    </param>
    <return name="isIgnoredOrMuted" type="number" apitype="1nil">
      <summary>1 if a unit is ignored or muted, nil otherwise</summary>
    </return>
  </function>
  <function name="SpellStopTargeting" type="function">
    <summary>Cancels the spell currently waiting for targeting.</summary>
  </function>
  <function name="GetGuildRosterLastOnline" type="function">
    <summary>Returns the amount of time since a guild members has been seen online</summary>
    <param name="index" type="number">
      <summary>The index of a member in the guild roster listing</summary>
    </param>
    <return name="years" type="number">
      <summary>The number of years since the player was last online</summary>
    </return>
    <return name="months" type="number">
      <summary>The number of months since the player was last online</summary>
    </return>
    <return name="days" type="number">
      <summary>The number of days since the player was last online</summary>
    </return>
    <return name="hours" type="number">
      <summary>The number of hours since the player was last online</summary>
    </return>
  </function>
  <function name="GetMapLandmarkInfo" type="function">
    <summary>Returns information about a map landmark</summary>
    <param name="index" type="number">
      <summary>The index of a map landmark, from 1 to GetNumMapLandmarks()</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the landmark</summary>
    </return>
    <return name="description" type="string">
      <summary>The description of the landmark.  This may contain dynamic information such as in the battlegrounds.</summary>
    </return>
    <return name="textureIndex" type="number">
      <summary>The index of the texture to be used for the landmark.  These indices map to the Interface/MinimapPOIIcons.blp graphic, starting with 1 in the upper left-hand corner of the image.</summary>
    </return>
    <return name="x" type="number">
      <summary>The x coordinate for the image's location as a proportion of the map's current width</summary>
    </return>
    <return name="y" type="number">
      <summary>The y coordinate for the image's localtion as a proportion of the map's current height</summary>
    </return>
  </function>
  <function name="CheckSpiritHealerDist" type="function">
    <summary>Returns whether or not the player is in range of a spirit healer</summary>
    <return name="inRange" type="number" apitype="1nil">
      <summary>1 if the player is in range of a spirit healer, otherwise nil</summary>
    </return>
  </function>
  <function name="GetModifiedClick" type="function">
    <summary>Returns the modifiers set (for example "CTRL-SHIFT") for the given modified click</summary>
    <param name="name" type="string">
      <summary>The name of the modified click to query</summary>
    </param>
    <return name="modifiers" type="string">
      <summary>The modifiers set for the given modified click (nil if the modified click could not be found)</summary>
    </return>
  </function>
  <function name="GetUnitMaxHealthModifier" type="function">
    <summary>Gets a modifier for calculating health gain from stamina</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="modifier" type="number">
      <summary>The modifier</summary>
    </return>
  </function>
  <function name="AcceptBattlefieldPort" type="function">
    <summary>Accepts the offered teleport to a battleground, or leaves the queue for a given battleground.</summary>
    <param name="index" type="number">
      <summary>The index of a battleground the player is currently queued for</summary>
    </param>
    <param name="accept" type="number" apitype="1nil">
      <summary>1 to accept the offered port, nil to leave the queue for the given battleground</summary>
    </param>
  </function>
  <function name="JoinChannelByName" type="function">
    <summary>Joins the given chat channel.  Deprecated, see JoinPermanentChannel.</summary>
    <param name="name" type="string">
      <summary>Channel name to join</summary>
    </param>
    <param name="password" type="string">
      <summary>Optional password required to join</summary>
    </param>
    <param name="id" type="number">
      <summary>ChatFrame id to display the channel in</summary>
    </param>
    <return name="zoneChannel" type="number">
      <summary>The index of the zone channel, or 0</summary>
    </return>
    <return name="channelName" type="string">
      <summary>The display name of the channel, if the channel was a zone channel</summary>
    </return>
  </function>
  <function name="KBArticle_BeginLoading" type="function">
    <summary>Requests a specific knowledge base article from the server</summary>
    <param name="articleId" type="number">
      <summary>The unique articleId to request</summary>
    </param>
    <param name="searchType" type="number">
      <summary>The search type of the request</summary>
    </param>
  </function>
  <function name="mod" type="function">
    <summary>This function is simply an alias for math.fmod</summary>
  </function>
  <function name="JoinPermanentChannel" type="function">
    <summary>Joins a channel, saving any relevant settings in chat-cache.txt</summary>
    <param name="name" type="string">
      <summary>The name of the channel to join</summary>
    </param>
    <param name="password" type="string" optional="true">
      <summary>The password to use when joining</summary>
    </param>
    <param name="chatFrameIndex" type="number" optional="true">
      <summary>The index of a chat frame.</summary>
    </param>
    <param name="enableVoice" type="number" apitype="1nil" optional="true">
      <summary>1 to enable voice in the channel, otherwise nil</summary>
    </param>
    <return name="zoneChannel" type="number">
      <summary>The index of the zone channel, or 0</summary>
    </return>
    <return name="channelName" type="string">
      <summary>The display name of the channel, if the channel was a zone channel</summary>
    </return>
  </function>
  <function name="CanEditGuildInfo" type="function">
    <summary>Returns whether or not the player can edit the guild information</summary>
    <return name="canEdit" type="number" apitype="1nil">
      <summary>1 if the player can edit the guild information, otherwise nil</summary>
    </return>
  </function>
  <function name="GetLootSlotLink" type="function">
    <summary>Returns an item link for a given loot window slot</summary>
    <param name="slot" type="number">
      <summary>A slot index in the loot window</summary>
    </param>
    <return name="link" type="string">
      <summary>An item link for the given item</summary>
    </return>
  </function>
  <function name="ForceLogout" type="function">
    <summary>Forces the client to logout</summary>
  </function>
  <function name="IsQuestCompletable" type="function">
    <summary>Returns whether or not the currently viewed quest is completable</summary>
    <return name="isCompletable" type="number" apitype="1nil">
      <summary>1 if the currently viewed quest is completable, otherwise nil</summary>
    </return>
  </function>
  <function name="GetDefaultDungeonDifficulty" type="function">
    <summary>Returns the default dungeon difficulty level for the player</summary>
    <return name="difficulty" type="number">
      <summary>The dungeon difficulty</summary>
    </return>
  </function>
  <function name="ItemTextHasNextPage" type="function">
    <summary>Determines if the currently open book has another page following the current one.</summary>
    <return name="next" type="number" apitype="1nil">
      <summary>1 if the currently open book has a page following the current one, nil otherwise.</summary>
    </return>
  </function>
  <function name="DeclineGroup" type="function">
    <summary>Declines a group invitation</summary>
  </function>
  <function name="ChannelVoiceOff" type="function">
    <summary>Disables voice chat in the given channel</summary>
    <param />
  </function>
  <function name="ItemTextGetText" type="function">
    <summary>Returns the test associated with the open item.</summary>
    <return name="text" type="string">
      <summary>The text associated with the open item</summary>
    </return>
  </function>
  <function name="GetCombatRatingBonus" type="function">
    <summary>Returns the percentage bonus for a given combat rating.</summary>
    <param name="ratingIndex" type="number">
      <summary>The index of the rating to be queried</summary>
    </param>
    <return name="ratingBonus" type="number">
      <summary>The percentage increase the rating confers</summary>
    </return>
  </function>
  <function name="IsDressableItem" type="function">
    <summary>Determines whether the given item can be put on in the dressing room</summary>
    <paramchoice>
      <param name="itemID" type="number">
        <summary>The item's ID</summary>
      </param>
      <param name="&quot;itemName&quot;" type="string">
        <summary>The item's name</summary>
      </param>
      <param name="&quot;itemLink&quot;" type="string">
        <summary>The item's link</summary>
      </param>
    </paramchoice>
    <return name="isDressable" type="number" apitype="1nil">
      <summary>1 if you can try the item on, otherwise nil</summary>
    </return>
  </function>
  <function name="ClearCursor" type="function">
    <summary>Removes whatever is currently attached to the cursor</summary>
  </function>
  <function name="ClosePetition" type="function">
    <summary>Close the petition window</summary>
  </function>
  <function name="CloseLoot" type="function">
    <summary>Closes the loot window</summary>
  </function>
  <function name="GetActiveVoiceChannel" type="function">
    <summary>Returns the currently active voice channel</summary>
    <return name="id" type="number">
      <summary>The id of the currently active voice channel</summary>
    </return>
  </function>
  <function name="GetTradeSkillInvSlotFilter" type="function">
    <summary>Returns whether or not a given tradeskill inventory slot filter is enabled</summary>
    <param name="index" type="number">
      <summary>The index of an inventory slot tradeskill filter, or 0 for the "All Slots" filter</summary>
    </param>
    <return name="enabled" type="number" apitype="1nil">
      <summary>1 if the filter is enabled, otherwise nil</summary>
    </return>
  </function>
  <function name="GetAuctionInvTypes" type="function">
    <summary>Returns a list of the inventory subtypes for a given auction house item subclass .</summary>
    <param name="classIndex" type="number">
      <summary>The class index to query.  The only section of the auction house that currently has a third level of drill-down when selecting is "Armor" which is classIndex 2</summary>
    </param>
    <param name="subClassIndex" type="number">
      <summary>The subClass to query.  This corresponds to the indices in the auction house listing, as subclasses for "Armor".  The special subclasses "Shields", "Librams", "Idols" and "Totems" do not have any sub-inventory types.</summary>
    </param>
    <return name="token" type="string">
      <summary>An inventory type token such as INVTYPE_FINGER</summary>
    </return>
    <return name="display" type="number" apitype="1nil">
      <summary>1 if the inventory type should be displayed in the auction house listing for this subcategory.  This is used in the auction house UI to hide inventory types that shoudln't appear under the given subclass (e.g. INVTYPE_TRINKET only shows up under the "Miscellaneous" subclass).</summary>
    </return>
    <return name="...">
      <summary>A repeating list of token, display pairs.</summary>
    </return>
  </function>
  <function name="UnSilenceMember" type="function" />
  <function name="IsFactionInactive" type="function">
    <summary>Returns whether or not a faction is flagged as "inactive"</summary>
    <param name="index" type="number">
      <summary>The index of a faction to query</summary>
    </param>
    <return name="isInactive" type="number" apitype="1nil">
      <summary>1 if the faction is currently flagged as "inactive" otherwise nil</summary>
    </return>
  </function>
  <function name="ActionHasRange" type="function">
    <summary>Returns whether or not an action has a range restriction</summary>
    <param name="slot" type="number">
      <summary>The action bar slot</summary>
    </param>
    <return name="hasRange" type="number" apitype="1nil">
      <summary>1 if the action has a range restriction, otherwise nil</summary>
    </return>
  </function>
  <function name="GetSelectedSkill" type="function">
    <summary>Returns the currently selected skill index, as listed in the Skills window</summary>
    <return name="skillIndex" type="number">
      <summary>The currently selected skill index, as listed in the Skills window.  The skill lines are numbered including the headers.</summary>
    </return>
  </function>
  <function name="SetGuildBankTabWithdraw" type="function">
    <summary>Sets the number of withdrawls allowed for the currently selected guild rank, on the given guild bank tab</summary>
    <param name="tab" type="number">
      <summary>The index of a guild tab</summary>
    </param>
    <param name="amount" type="number">
      <summary>The number of withdrawls allowed for the current guild rank, on the given tab</summary>
    </param>
  </function>
  <function name="IsVoiceChatAllowedByServer" type="function">
    <summary>Returns 1 if voice chat is allowed on the server, otherwise nil.</summary>
  </function>
  <function name="next" type="function" />
  <function name="IsAltKeyDown" type="function">
    <summary>Returns whether or not an Alt key on the keyboard is held down.</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if an Alt key on the keyboard is currently held down</summary>
    </return>
  </function>
  <function name="IsUsableItem" type="function">
    <summary>Determine the usability of an item.</summary>
    <paramchoice>
      <param name="itemID" type="number">
        <summary>An item's ID</summary>
      </param>
      <param name="itemName" type="string">
        <summary>An item's name</summary>
      </param>
      <param name="itemLink" type="string">
        <summary>An item's link</summary>
      </param>
    </paramchoice>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the item is currently usable, otherwise nil</summary>
    </return>
    <return name="unknown">
      <summary>Unknown purpose.  May be used to indicate why an item is not usable, but cannot determine.</summary>
    </return>
  </function>
  <function name="GetMapContinents" type="function">
    <summary>Returns a list of the map continents</summary>
    <return name="..." type="string">
      <summary>The names of all valid continent names, as a list of strings</summary>
    </return>
  </function>
  <function name="GetAbandonQuestName" type="function">
    <summary>Returns the name of the quest being abandoned</summary>
    <return name="name" type="string">
      <summary>The name of the quest being abandoned</summary>
    </return>
  </function>
  <function name="GetBattlefieldPortExpiration" type="function">
    <summary>Returns the time left on a battleground or arena invitation</summary>
    <param name="index" type="number">
      <summary>The index of the battleground or arena as listed in the tooltip for the minimap battle status icon.</summary>
    </param>
    <return name="expiration" type="number">
      <summary>Time until your invitation expires (in milliseconds)</summary>
    </return>
  </function>
  <function name="GetMacroBody" type="function">
    <summary>Returns the body of a given macro index</summary>
    <param name="index" type="number">
      <summary>The macro index to query.  The "global" macro ids are 1-18, while the player specific macros are stored in 19-36.</summary>
    </param>
    <return name="body" type="string">
      <summary>The body of the macro, as a text string</summary>
    </return>
  </function>
  <function name="ChannelToggleAnnouncements" type="function">
    <summary>Toggles channel announcements for a given channel.</summary>
    <param name="channel" type="string">
      <summary>The channel to enable or disable channel announcements for</summary>
    </param>
  </function>
  <function name="IsTrainerServiceSkillStep" type="function">
    <summary>Returns whether or not the given trainer service is a skill step, rather than a recipe.</summary>
    <param name="index" type="number">
      <summary>The index of a skill in the trainer window.  This index is affected by filtering, so the first shown skill is index 1.</summary>
    </param>
    <return name="isSkillStep" type="number" apitype="1nil">
      <summary>1 if the service offered by the trainer is one that will affect the player's skill (such as Journeyman Leatherworking, or Apprentice First Aid.</summary>
    </return>
  </function>
  <function name="UnitIsPlayer" type="function">
    <summary>Returns whether or not a given unit is the player's unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="isPlayer" type="number" apitype="1nil">
      <summary>1 if the unit is the player, otherwise nil</summary>
    </return>
  </function>
  <function name="IsTradeskillTrainer" type="function">
    <summary>Returns whether or not the currently open training window is a tradeskill trainer</summary>
    <return name="isTradeskill" type="number" apitype="1nil">
      <summary>1 if the currently open training window is a tradeskill trainer</summary>
    </return>
  </function>
  <function name="GetGuildEventInfo" type="function">
    <summary>Returns information on the guild log.</summary>
    <param name="index" type="number">
      <summary>Guild event log index between 1 and GetNumGuildEvens()</summary>
    </param>
    <return name="type" type="string">
      <summary>Event Type</summary>
    </return>
    <return name="player1" type="string">
      <summary>First actor in the log</summary>
    </return>
    <return name="player2" type="string">
      <summary>Second actor in the log</summary>
    </return>
    <return name="rank" type="string">
      <summary>Rank if applicable to the 'type' of the event.</summary>
    </return>
    <return name="year" type="number">
      <summary>Amount of years ago this event occured.</summary>
    </return>
    <return name="month" type="number">
      <summary>Amount of months ago this event occured.</summary>
    </return>
    <return name="day" type="number">
      <summary>Amount of days ago this event occured.</summary>
    </return>
    <return name="hour" type="number">
      <summary>Amount of hours ago this event occured.</summary>
    </return>
  </function>
  <function name="GetGuildInfoText" type="function">
    <summary>Returns the information text for the player's guild.</summary>
    <return name="guildInfoText" type="string">
      <summary>A string containing the guild information text (including newline characters)</summary>
    </return>
  </function>
  <function name="SetChatWindowDocked" type="function">
    <summary>Sets the value of the docked setting for the given chat window in chat-cache.txt</summary>
    <param name="index" type="number">
      <summary>The index of the chat window to modify</summary>
    </param>
    <param name="docked" type="number" apitype="1nil">
      <summary>1 if the chat frame is docked with the main frame, otherwise nil</summary>
    </param>
  </function>
  <function name="GetActiveLevel" type="function" />
  <function name="IsHelpfulSpell" type="function">
    <summary>Returns whether or not a given spell is helpful</summary>
    <param name="spell" type="string">
      <summary>The name of the spell to query</summary>
    </param>
    <return name="isHelpful" type="number" apitype="1nil">
      <summary>1 if the spell is helpful, otherwise nil</summary>
    </return>
  </function>
  <function name="CanEditGuildTabInfo" type="function">
    <summary>Returns whether or not the player can edit a given guild tab info</summary>
    <param name="tab" type="number">
      <summary>The index of the guild tab</summary>
    </param>
    <return name="canEdit" type="number" apitype="1nil">
      <summary>1 if the player can edit the given guild tab, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumTrainerServices" type="function">
    <summary>Returns the number of available trainer services</summary>
    <return name="numServices" type="number">
      <summary>The number of available trainer service</summary>
    </return>
  </function>
  <function name="GetGMStatus" type="function" />
  <function name="IsStackableAction" type="function">
    <summary>Returns whether or not a given action slot contains a stackable action.</summary>
    <param name="slot" type="number">
      <summary>The number of an action slot</summary>
    </param>
    <return name="isStackable" type="number" apitype="1nil">
      <summary>1 if the action is a stackable action, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumBattlefieldPositions" type="function">
    <summary>Returns the number of team members currently on the battlefield</summary>
    <return name="numTeamMembers" type="number">
      <summary>Number of Team Members currently on the battlefield</summary>
    </return>
  </function>
  <function name="GetTabardInfo" type="function" />
  <function name="GrantLevel" type="function" />
  <function name="IsSilenced" type="function">
    <summary>Returns whether or not the given unit is silenced for Voice Chat on a channel</summary>
    <param name="name" type="string">
      <summary>The name of the player to query</summary>
    </param>
    <param name="channel" type="string">
      <summary>The channel to query</summary>
    </param>
    <return name="isSilenced" type="number" apitype="1nil">
      <summary>1 if the player is silenced on the given channel, or nil</summary>
    </return>
  </function>
  <function name="HasPetSpells" type="function">
    <summary>Returns whether or not the player's current active pet has spells or not.</summary>
    <return name="hasPetSpells" type="number" apitype="1nil">
      <summary>1 if the player has an active pet with spells/abilities currently, nil otherwise</summary>
    </return>
    <return name="petType" type="string">
      <summary>Type of pet used.</summary>
    </return>
  </function>
  <function name="GetActionBarPage" type="function">
    <summary>Returns the current action bar page</summary>
    <return name="page" type="number">
      <summary>The current action bar page</summary>
    </return>
  </function>
  <function name="SortAuctionClearSort" type="function">
    <summary>Clears any current sorting rules for the given auction house listing</summary>
    <param name="type" type="string">
      <summary>The auction house listing to clear</summary>
    </param>
  </function>
  <function name="GetRealNumRaidMembers" type="function">
    <summary>Returns the number of members in the player's "real" non-battleground raid group</summary>
    <return name="numMembers" type="number">
      <summary>The number of members in the player's actual raid group.  This function is necessary in order to distinguish between the player's actual raid group, and any raid group they may belong to in a battleground/arena.</summary>
    </return>
  </function>
  <function name="GetNumQuestLogRewards" type="function">
    <summary>Returns the count of the rewards for a particular quest</summary>
    <return name="numRewards" type="number">
      <summary>The number of rewards for this quest</summary>
    </return>
  </function>
  <function name="SendWho" type="function">
    <summary>Sends a who request to the server</summary>
    <param name="filter" type="string">
      <summary>A filter for the who results.  A filter can be any combination of the possible values, but can only have one filter of each type, per request.  A blank filter (the empty string) can be submitted, but a filter argument must be supplied.</summary>
    </param>
  </function>
  <function name="ChannelSilenceVoice" type="function">
    <summary>Silences the given character for voice chat on the channel.  Can only be done as a raid/party/bg leader or assistant</summary>
    <param name="channel" type="string">
      <summary>Channel to silence the character on</summary>
    </param>
    <param name="name" type="string">
      <summary>Name of the character to silence</summary>
    </param>
  </function>
  <function name="GetGuildBankWithdrawLimit" type="function">
    <summary>Returns the guildbank gold withdraw limit for the current rank being viewed in the guild control pane.</summary>
    <return name="goldWithdrawLimit" type="number">
      <summary>Gold withdrawal limit. -1 being unlimited.</summary>
    </return>
  </function>
  <function name="EditMacro" type="function">
    <summary>Edit Macro command/button</summary>
    <param name="index" type="number">
      <summary>Macro index number</summary>
    </param>
    <param name="name" type="string">
      <summary>Name of the macro to be shown in the UI. Current limit is 16 characters</summary>
    </param>
    <param name="icon" type="number">
      <summary>An iconTextureID from 1 to GetNumMacroIcons()</summary>
    </param>
    <param name="body" type="string">
      <summary>The macro command to be executed. Current limit used is 255 characters</summary>
    </param>
    <param name="local" type="number">
      <summary>Indicates if the macro is stored locally or on the server.  This return value is currently unused</summary>
    </param>
    <param name="perCharacter" type="number">
      <summary>0 for a per account macro, 1 for a per character one</summary>
    </param>
    <return name="macroID" type="number">
      <summary>The index of the macro</summary>
    </return>
  </function>
  <function name="RequestBattlefieldPositions" type="function">
    <summary>Requests new battlefield position information from the server</summary>
  </function>
  <function name="CommentatorUpdatePlayerInfo" type="function" />
  <function name="ConfirmLootSlot" type="function">
    <summary>Confirms the looting of a bind-on-pickup item</summary>
    <param name="slot" type="number">
      <summary>The index of the loot slot</summary>
    </param>
  </function>
  <function name="IsResting" type="function">
    <summary>Returns the player's resting status</summary>
    <return name="resting" type="boolean">
      <summary>Whether the player is resting</summary>
    </return>
  </function>
  <function name="HasWandEquipped" type="function">
    <summary>Returns whether or not the player has a wand equipped</summary>
    <return name="isEquipped" type="number" apitype="1nil">
      <summary>1 if a wand is equipped, otherwise nil</summary>
    </return>
  </function>
  <function name="GetStablePetInfo" type="function">
    <summary>Returns information about a currently stabled pet</summary>
    <param name="index" type="number">
      <summary>The index of the stable pet</summary>
    </param>
    <return name="icon" type="string">
      <summary>The path to the pet's icon texture</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the pet</summary>
    </return>
    <return name="level" type="number">
      <summary>The level of the pet</summary>
    </return>
    <return name="family" type="string">
      <summary>The family of the pet in the current locale</summary>
    </return>
    <return name="loyalty" type="string">
      <summary>The loyalty level of the pet, as a localized string</summary>
    </return>
  </function>
  <function name="VoiceChat_StopRecordingLoopbackSound" type="function">
    <summary>Stops the recording of the loopback sounds</summary>
  </function>
  <function name="GetPetActionCooldown" type="function">
    <summary>Returns cooldown information about a given pet action slot</summary>
    <param name="slot" type="number">
      <summary>The pet action slot to query for cooldown information</summary>
    </param>
    <return name="start" type="number">
      <summary>The value of GetTime() at the moment the cooldown began, or 0</summary>
    </return>
    <return name="duration" type="number">
      <summary>The length of the cooldown, or 0</summary>
    </return>
    <return name="enable" type="number">
      <summary>1 if the cooldown is enabled, otherwise 0</summary>
    </return>
  </function>
  <function name="PurchaseSlot" type="function">
    <summary>Purchases a bank slot without confirmation.</summary>
  </function>
  <function name="IsRaidOfficer" type="function">
    <summary>Returns whether or not the player is a Raid Officer or not</summary>
    <return name="isRaidOfficer" type="boolean">
      <summary>Whether or not the player is a Raid Officer</summary>
    </return>
  </function>
  <function name="IsRaidLeader" type="function">
    <summary>Returns whether or not the player is the leader of their current raid</summary>
    <return name="isLeader" type="number" apitype="1nil">
      <summary>1 if the player is the leader of their current raid, otherwise nil</summary>
    </return>
  </function>
  <function name="CheckBinderDist" type="function">
    <summary>Returns whether or not the player is in range of an NPC that can bind their hearthstone</summary>
    <return name="inRange" type="number" apitype="1nil">
      <summary>1 if the player is in range of a hearthstone binder, otherwise nil</summary>
    </return>
  </function>
  <function name="GetQuestLogTitle" type="function">
    <summary>Returns information about a quest in your quest log</summary>
    <param name="questID" type="number">
      <summary>The index of the quest you wish to get information about</summary>
    </param>
    <return name="questLogTitleText" type="string">
      <summary>The title of the quest or nil if the index is out of range</summary>
    </return>
    <return name="level" type="number">
      <summary>The level of the quest</summary>
    </return>
    <return name="questTag" type="string">
      <summary>The type of quest</summary>
    </return>
    <return name="suggestedGroup" type="number">
      <summary>If the questTag is Group, the positive number of players suggested for the quest, or nil</summary>
    </return>
    <return name="isHeader" type="number" apitype="1nil">
      <summary>Whether the entry is a header</summary>
    </return>
    <return name="isCollapsed" type="number" apitype="1nil">
      <summary>Whether the entry is a collapsed header</summary>
    </return>
    <return name="isComplete" type="number">
      <summary>Whether the quest is complete</summary>
    </return>
    <return name="isDaily" type="number" apitype="1nil">
      <summary>Whether the quest is a daily</summary>
    </return>
  </function>
  <function name="ConfirmBindOnUse" type="function">
    <summary>Confirms the "Bind on Use" dialog when using a new item</summary>
  </function>
  <function name="CalendarGetDate" type="function" />
  <function name="GetQuestItemLink" type="function">
    <summary>Returns an item link for a quest item (reward or requirement)</summary>
    <param name="type" type="string">
      <summary>The type of quest item</summary>
    </param>
    <return name="link" type="string">
      <summary>The item link for the quest item</summary>
    </return>
  </function>
  <function name="AcceptTrade" type="function">
    <summary>Accepts a proposed trade</summary>
  </function>
  <function name="IsPossessBarVisible" type="function">
    <summary>Returns whether or not the PossessBar should be visible</summary>
    <return name="isVisible" type="number" apitype="1nil">
      <summary>if the the possessionbar should be visible, otherwise nil.</summary>
    </return>
  </function>
  <function name="GuildDisband" type="function">
    <summary>Disbands your guild without confirmation.  Can only be done by the guildleader.</summary>
  </function>
  <function name="CancelShapeshiftForm" type="function">
    <summary>Cancels the current shapeshift form</summary>
  </function>
  <function name="AddIgnore" type="function">
    <summary>Adds a player or unit to the ignore list</summary>
    <paramchoice>
      <param name="name" type="string">
        <summary>The full name of a player to add to the ignore list</summary>
      </param>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid of the player to add to the ignore list</summary>
      </param>
    </paramchoice>
  </function>
  <function name="IsPassiveSpell" type="function">
    <summary>Returns whether or not a given spell is passive (i.e. cannot be cast)</summary>
    <param name="id" type="number">
      <summary>The index of the spell being queried</summary>
    </param>
    <param name="bookType" type="string">
      <summary>A string indicating which spellbook type should be queried.  This is either the value BOOKTYPE_SPELL, or BOOKTYPE_PET which correspond to the strings "spell" and "pet".</summary>
    </param>
    <return name="isPassive" type="number" apitype="1nil">
      <summary>1 if the spell is passive, otherwise nil</summary>
    </return>
  </function>
  <function name="IsOutdoors" type="function">
    <summary>This function returns whether or not the player is currently outdoors.</summary>
    <return name="isOutdoors" type="number" apitype="1nil">
      <summary>1 if the player is currently outdoors, otherwise nil</summary>
    </return>
  </function>
  <function name="IsOutOfBounds" type="function">
    <summary>Returns whether or not the player is currently outside the bounds of the world</summary>
    <return name="outOfBounds" type="number" apitype="1nil">
      <summary>1 if the player is currently outside the bounds of the world, otherwise nil</summary>
    </return>
  </function>
  <function name="AutoStoreGuildBankItem" type="function">
    <summary>Withdraws an item from the guild bank, automatically storing it in your inventory</summary>
    <param name="tab" type="number">
      <summary>The index of a guild bank tab</summary>
    </param>
    <param name="slot" type="number">
      <summary>A slot in the guild bank tab</summary>
    </param>
  </function>
  <function name="IsAddOnLoaded" type="function">
    <summary>Query if an addon is loaded (running)</summary>
    <param name="index">
      <summary>The addon index to query.  Between 1 and GetNumAddOns().  Blizzard addons cannot be queried by index.  Addon index is OS specific, in some versions of Windows it is alphabetically sorted on folder name.</summary>
    </param>
    <param name="name" type="string">
      <summary>Name of the addon to query.  Not case-sensative.  Uses the addon folder name, not the title from the TOC.</summary>
    </param>
    <return name="loaded" type="number" apitype="1nil">
      <summary>1 is the addon is loaded, nil otherwise</summary>
    </return>
  </function>
  <function name="BuybackItem" type="function">
    <summary>Purchases an item from the buyback tab</summary>
    <param name="slot" type="number">
      <summary>The slot on the buyback tab</summary>
    </param>
  </function>
  <function name="GetCVarBool" type="function">
    <summary>Returns the value of the CVar as 1 or nil instead of requiring you to compare the cvar value with "0" or "1"</summary>
    <param name="cvar" type="string">
      <summary>The name of the CVar to query</summary>
    </param>
    <return name="value" type="number" apitype="1nil">
      <summary>1 if the given CVar is set to "1", otherwise nil</summary>
    </return>
  </function>
  <function name="ToggleSpellAutocast" type="function">
    <summary>Toggles a spellbook spell as auto-cast</summary>
    <param name="spellId" type="number">
      <summary>The index of a spell in the spellbook</summary>
    </param>
    <param name="bookType" type="string">
      <summary>The type of spellbook</summary>
    </param>
  </function>
  <function name="IsMouselooking" type="function">
    <summary>Returns whether or not mouselook mode is active</summary>
    <return name="isLooking" type="boolean">
      <summary>Returns true if mouselook mode is active, false otherwise</summary>
    </return>
  </function>
  <function name="IsMounted" type="function">
    <summary>Returns whether or not your character is mounted.</summary>
    <return name="mounted" type="number" apitype="1nil">
      <summary>1 if the player is mounted, otherwise nil</summary>
    </return>
  </function>
  <function name="IsModifiedClick" type="function">
    <summary>Determines if the modifiers specified in the click-type had been held down while the button click occured.</summary>
    <param name="type" type="string">
      <summary>The name of the click-type.</summary>
    </param>
    <return name="modifiedClick" type="number" apitype="1nil">
      <summary>1 if the click was modifierd, nil otherwise</summary>
    </return>
  </function>
  <function name="GetGuildBankItemLink" type="function">
    <summary>Returns the item link of the item at a specific position in the guild bank.</summary>
    <param name="tab" type="number">
      <summary>The tab index to check</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot within the tab to check</summary>
    </param>
    <return name="item" type="string">
      <summary>The item link of the item at the specified position.</summary>
    </return>
  </function>
  <function name="GetPVPSessionStats" type="function">
    <summary>Returns the pvp stats for the current session</summary>
    <return name="honorKills" type="number">
      <summary>The estimated number of honor kills for the given session</summary>
    </return>
    <return name="honorPoints" type="number">
      <summary>The estimated number of honor points for the given session</summary>
    </return>
  </function>
  <function name="GetInboxHeaderInfo" type="function">
    <summary>Returns information an inbox item</summary>
    <param name="index" type="number">
      <summary>The index of the mail message to be queried</summary>
    </param>
    <return name="packageIcon" type="string">
      <summary>The icon of the item or package being sent.  If the mail contains just gold or a message this will be nil.</summary>
    </return>
    <return name="stationeryIcon" type="string">
      <summary>The icon for the message stationery</summary>
    </return>
    <return name="sender" type="string">
      <summary>The name of the sender</summary>
    </return>
    <return name="subject" type="string">
      <summary>The subject of the message</summary>
    </return>
    <return name="money" type="number">
      <summary>The amount of money in the message, in copper</summary>
    </return>
    <return name="CODAmount" type="number">
      <summary>The cost of the COD message, in copper</summary>
    </return>
    <return name="daysLeft" type="number">
      <summary>The amount of time left on the message, in days</summary>
    </return>
    <return name="itemCount" type="number">
      <summary>The number of items attached to the message</summary>
    </return>
    <return name="wasRead" type="number" apitype="1nil">
      <summary>1 if the message has been read, otherwise nil</summary>
    </return>
    <return name="wasReturned" type="number" apitype="1nil">
      <summary>1 if the message has been returned to the player, otherwise nil</summary>
    </return>
    <return name="textCreated" type="number" apitype="1nil">
      <summary>1 if a copy of the message text has been made, otherwise nil</summary>
    </return>
    <return name="canReply" type="number" apitype="1nil">
      <summary>1 if the player can reply to the message, otherwise nil</summary>
    </return>
    <return name="isGM" type="number" apitype="1nil">
      <summary>1 if the message is from a game master, otherwise nil</summary>
    </return>
    <return name="itemQuantity" type="number">
      <summary>The number of items in the stack.  This is only returned when the mail only has a single item attachment</summary>
    </return>
  </function>
  <function name="CanSummonFriend" type="function" />
  <function name="CommentatorEnterInstance" type="function" />
  <function name="AcceptGroup" type="function">
    <summary>Accepts an invitation to a party</summary>
  </function>
  <function name="GetWorldStateUIInfo" type="function">
    <summary>Returns information about a WorldState UI element</summary>
    <param name="index" type="number">
      <summary>An index between 1 and GetNumStateWorldUI()</summary>
    </param>
    <return name="uiType" type="number">
      <summary>A value of 1 indicates a conditional UI element, whereas any other value will always be displayed</summary>
    </return>
    <return name="state" type="number" apitype="1nil">
      <summary>1 if the objective is displayed, otherwise nil</summary>
    </return>
    <return name="text" type="string">
      <summary>The text of the objective</summary>
    </return>
    <return name="icon" type="string">
      <summary>The path to the objective's icon texture</summary>
    </return>
    <return name="dynamicIcon" type="string">
      <summary>The path to the objective's dynamic icon texture</summary>
    </return>
    <return name="extendedUI" type="string">
      <summary>"CAPTUREPOINT" to display a progress bar for a capture point, otherwise the empty string</summary>
    </return>
    <return name="extendedUIState1" type="number">
      <summary>The index of the capturebar index</summary>
    </return>
    <return name="extendedUIState2" type="number">
      <summary>The current progress bar position, 0 is the right edge, 100 is the left edge.</summary>
    </return>
    <return name="extendedUIState3" type="number">
      <summary>The width of the neutral zone as a percentage (0 - 100).  If the neutral zone is 50, then 25% of the bar is Horde, 25% of the bar is Alliance and there is 50% of the bar in the middle as neutral.</summary>
    </return>
  </function>
  <function name="ChannelUnmute" type="function">
    <summary>Unmutes the specified player on that channel</summary>
    <param name="channel" type="string">
      <summary>The channel to unmute the player in.</summary>
    </param>
    <param name="player" type="string">
      <summary>The player to unmute,</summary>
    </param>
  </function>
  <function name="InitiateTrade" type="function">
    <summary>Initiates a trade with a given unit</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to initiate a trade with</summary>
    </param>
  </function>
  <function name="UnitClassBase" type="function">
    <summary>Queries a unit's class</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="class" type="string">
      <summary>The localized name of the queried unit's class</summary>
    </return>
    <return name="englishClass" type="string">
      <summary>The english name of the queried unit's class, as an uppercase string</summary>
    </return>
  </function>
  <function name="IsIndoors" type="function">
    <summary>Returns whether or not the player is currently indoors</summary>
    <return name="inside" type="number" apitype="1nil">
      <summary>1 if the player is currently indoors, otherwise nil</summary>
    </return>
  </function>
  <function name="IsInInstance" type="function">
    <summary>Returns whether or not the player is currently in an instance, and if so what type</summary>
    <return name="isInstance" type="number" apitype="1nil">
      <summary>1 if the player is in an instance, otherwise nil</summary>
    </return>
    <return name="instanceType" type="string">
      <summary>The type of instance the player is in</summary>
    </return>
  </function>
  <function name="UpdateMapHighlight" type="function">
    <summary>Returns information about the texture used to highlight subregions of the world map</summary>
    <param name="x" type="number">
      <summary>The X position of the cursor, as a proportion of WorldMapDetailFrame's width</summary>
    </param>
    <param name="y" type="number">
      <summary>The Y position of the cursor, as a proportion of WorldMapDetailFrame's height</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the zone being highlighted</summary>
    </return>
    <return name="fileName" type="string">
      <summary>The filename to use for the highlight texture</summary>
    </return>
    <return name="texCoordX" type="number">
      <summary>The right texCoord value for the highlight texture</summary>
    </return>
    <return name="texCoordY" type="number">
      <summary>The bottom texCoord value for the highlight texture</summary>
    </return>
    <return name="textureX" type="number">
      <summary>The width of the texture as a proportion of WorldMapDetailFrame's width</summary>
    </return>
    <return name="textureY" type="number">
      <summary>The height of the texture as a proportion of WorldMapDetailFrame's height</summary>
    </return>
    <return name="scrollChildX" type="number">
      <summary>The X coordinate for the TOPLEFT anchor point of the texture, as a proportion of WorldMapDetailFrame's width</summary>
    </return>
    <return name="scrollChildY" type="number">
      <summary>The X coordinate for the TOPLEFT anchor point of the texture, as a proportion of WorldMapDetailFrame's width</summary>
    </return>
  </function>
  <function name="HasSoulstone" type="function">
    <summary>Returns whether or not the player has a soulstone resurrection available</summary>
    <return name="text" type="string">
      <summary>The text to be displayed on the dialog box if the player has a soulstone resurrection available, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumGuildEvents" type="function">
    <summary>Returns the number of available guild events for the guild log</summary>
    <return name="numEvents" type="number">
      <summary>Returns the number of guild log events available.  These entries are only made available via event callback from the function QueryGuildEventLog().</summary>
    </return>
  </function>
  <function name="GetLootThreshold" type="function">
    <summary>Returns the current loot threshold setting.</summary>
    <return name="threshold" type="number">
      <summary>Loot threshold</summary>
    </return>
  </function>
  <function name="CommentatorGetPlayerInfo" type="function" />
  <function name="IsConsumableItem" type="function">
    <summary>Whether or not a given item is consumable.</summary>
    <paramchoice>
      <param name="itemID" type="number">
        <summary>An item's ID</summary>
      </param>
      <param name="itemName" type="string">
        <summary>An item's name</summary>
      </param>
      <param name="itemLink" type="string">
        <summary>An item's link</summary>
      </param>
    </paramchoice>
    <return name="consumable" type="number" apitype="1nil">
      <summary>1 if the item is a consumable, nil for invalid or non-consumable items.</summary>
    </return>
  </function>
  <function name="GetContainerNumSlots" type="function">
    <summary>Returns the number of slots for a given container</summary>
    <param name="index" type="number">
      <summary>The index of a container</summary>
    </param>
    <return name="numSlots" type="number">
      <summary>The number of slots for the given container</summary>
    </return>
  </function>
  <function name="CloseTrainer" type="function">
    <summary>Closes the trainer window</summary>
  </function>
  <function name="GetMaxDailyQuests" type="function">
    <summary>Returns the maximum number of daily quests that can be completed each day.</summary>
    <return name="max" type="number">
      <summary>The maximum number of daily quests that can be completed each day</summary>
    </return>
  </function>
  <function name="ResetChatWindows" type="function">
    <summary>Resets the chat windows to hardcoded defaults</summary>
  </function>
  <function name="GetChannelName" type="function">
    <summary>Returns information about a given chat channel.</summary>
    <paramchoice>
      <param name="channelIndex" type="number">
        <summary>A channel ID</summary>
      </param>
      <param name="channelName" type="string">
        <summary>A channel name</summary>
      </param>
    </paramchoice>
    <return name="channel" type="number">
      <summary>The ID of the channel.</summary>
    </return>
    <return name="channelName" type="string">
      <summary>The name of the channel.</summary>
    </return>
    <return name="instanceID" type="number">
      <summary>The channel's instance ID, or 0 if there are not separate instances of the channel.</summary>
    </return>
  </function>
  <function name="SetDungeonDifficulty" type="function">
    <summary>Sets the dungeon difficulty mode</summary>
    <param name="difficulty" type="number">
      <summary>The level of difficulty</summary>
    </param>
  </function>
  <function name="IsCurrentQuestFailed" type="function">
    <summary>Queries the failed state for the currently selected quest.</summary>
    <return name="isFailed" type="number" apitype="1nil">
      <summary>1 if the current quest is failed, otherwise nil</summary>
    </return>
  </function>
  <function name="VoiceEnumerateOutputDevices" type="function">
    <summary>Returns the name of a given voice output device</summary>
    <param name="index" type="number">
      <summary>The index of an output device</summary>
    </param>
    <return name="device" type="string">
      <summary>The name of the output device</summary>
    </return>
  </function>
  <function name="GetInventoryItemBroken" type="function">
    <summary>Returns whether or not the given inventory item is broken</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unitid to query</summary>
    </param>
    <param name="inventoryID" type="number">
      <summary>The inventoryID to query</summary>
    </param>
    <return name="isBroken" type="number" apitype="1nil">
      <summary>1 if the item is broken, otherwise nil</summary>
    </return>
  </function>
  <function name="random" type="function">
    <summary>This function is simply an alias for math.random</summary>
  </function>
  <function name="GetMacroItemIconInfo" type="function">
    <summary>Returns the texture for macro item icons</summary>
    <param name="index" type="number">
      <summary>The index of the icon to query</summary>
    </param>
    <return name="texture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
  </function>
  <function name="GetLootRollTimeLeft" type="function">
    <summary>Returns the amount of time left on the given loot roll, in milliseconds.</summary>
    <param name="id" type="number">
      <summary>The index of the loot roll.  Each new item that is rolled on increments this number by one so two items won't have the same roll index.</summary>
    </param>
    <return name="timeLeft" type="number">
      <summary>The amount of time left on given the loot roll, in milliseconds</summary>
    </return>
  </function>
  <function name="QueryGuildEventLog" type="function">
    <summary>Queries the server for the guild event log.</summary>
  </function>
  <function name="GetTradePlayerItemInfo" type="function">
    <summary>Returns information about an item that the player has placed in the trade window</summary>
    <param name="index" type="number">
      <summary>The index in the trade window</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the item</summary>
    </return>
    <return name="texture" type="string">
      <summary>The path to the item's icon texture</summary>
    </return>
    <return name="numItems" type="number">
      <summary>The number of items in the stack</summary>
    </return>
    <return name="quality" type="number">
      <summary>The quality level of the item</summary>
    </return>
    <return name="isUsable" type="number" apitype="1nil">
      <summary>1 if the item is usable by the player, otherwise nil</summary>
    </return>
    <return name="enchantment" type="string">
      <summary>The name of the enchantment being applied to the item, if applicable</summary>
    </return>
  </function>
  <function name="FlagTutorial" type="function">
    <summary>Flags a tutorial step as already viewed, so it doesn't appears again.</summary>
    <param name="tutorial" type="string">
      <summary>The identifier for the tutorial step</summary>
    </param>
  </function>
  <function name="CloseMail" type="function">
    <summary>Closes the mail window</summary>
  </function>
  <function name="GetUnitManaRegenRateFromSpirit" type="function">
    <summary>Returns the mana regeneration rate per second the unit has from the spirit stat</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="regen" type="number">
      <summary>The amount of mana regeneration the unit gains each second from spirit, while not casting.</summary>
    </return>
  </function>
  <function name="GetAddOnDependencies" type="function">
    <summary>Get all dependencies of the queried addon. Returns nil if no dependencies are listed.</summary>
    <paramchoice>
      <param name="index" type="number">
        <summary>The index of the AddOn, must be in the range of 1 to GetNumAddOns().</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the AddOn as it appears in its folder name.</summary>
      </param>
    </paramchoice>
    <return name="...">
      <summary>A list of all AddOns the queried AddOn depends on.</summary>
    </return>
  </function>
  <function name="CancelDuel" type="function">
    <summary>Cancels a proposed duel, or declines a duel that has been offered</summary>
  </function>
  <function name="EnableSpellAutocast" type="function">
    <summary>Enabled auto-cast for a given pet spell</summary>
    <param name="spell" type="string">
      <summary>The name of a pet spell</summary>
    </param>
  </function>
  <function name="GetBinding" type="function">
    <summary>Returns information about a key binding.</summary>
    <param name="index" type="number">
      <summary>The index in the key bindings window (headings are included)</summary>
    </param>
    <return name="commandName" type="string">
      <summary>The name of the command, used in the key binding functions</summary>
    </return>
    <return name="binding1" type="string">
      <summary>The primary key binding for the command, or nil</summary>
    </return>
    <return name="binding2" type="string">
      <summary>The secondary key binding for the command, or nil</summary>
    </return>
  </function>
  <function name="GetDefaultLanguage" type="function">
    <summary>Returns the default language that the character speaks</summary>
    <return name="language" type="string">
      <summary>The default language the player's character speaks</summary>
    </return>
  </function>
  <function name="KBSetup_GetSubCategoryData" type="function">
    <summary>Returns information a knowledge base subcategory</summary>
    <param name="index" type="number">
      <summary>The index of the category</summary>
    </param>
    <param name="subindex" type="number">
      <summary>The index of the subcategory</summary>
    </param>
    <return name="categoryId" type="number">
      <summary>The unique categoryId for the given subcategory</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the subcategory</summary>
    </return>
  </function>
  <function name="debugtimestamp" type="function" />
  <function name="GetGuildInfo" type="function">
    <summary>Retrieves information about a players guild.</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="guildName" type="string">
      <summary>The name of the guild.</summary>
    </return>
    <return name="guildRankName" type="string">
      <summary>The players guild rank.</summary>
    </return>
    <return name="guildRankIndex" type="number">
      <summary>The index of the players guild rank.</summary>
    </return>
  </function>
  <function name="GetGuildBankTabCost" type="function">
    <summary>Returns the cost of the next available guild bank tab</summary>
    <return name="tabCost" type="number">
      <summary>The cost of the next guild bank tab, in copper</summary>
    </return>
  </function>
  <function name="GetPetFoodTypes" type="function">
    <summary>Returns a list of strings enumerating the food types your current pet can eat.</summary>
    <return name="..." type="string">
      <summary>A list of available food types for the current pet or nil if no food types available</summary>
    </return>
  </function>
  <function name="CancelItemTempEnchantment" type="function">
    <summary>Cancels a temporary item enchant</summary>
    <param name="slot" type="number">
      <summary>1 to cancel the mainhand item enchant, 2 to cancel the offhand item enchant</summary>
    </param>
  </function>
  <function name="GetTalentTabInfo" type="function">
    <summary>Returns information about the specified talent tree from either the player or the unit that is being inspected. </summary>
    <param name="index" type="number">
      <summary>The index of the talent tab.</summary>
    </param>
    <param name="isInspect" type="number" apitype="1nil">
      <summary>1 if inspecting someone, nil otherwise</summary>
    </param>
    <return name="name" type="string">
      <summary>The name of the talent tree.</summary>
    </return>
    <return name="texture" type="string">
      <summary>The texture of the talent tree.</summary>
    </return>
    <return name="points" type="number">
      <summary>The number of talent points spent in the talent tree.</summary>
    </return>
    <return name="fileName" type="string">
      <summary>The file name to the background texture for the talent tree.</summary>
    </return>
  </function>
  <function name="IsActiveBattlefieldArena" type="function">
    <summary>Returns whether or not the current battlefield is an arena match</summary>
    <return name="isArena" type="number" apitype="1nil">
      <summary>1 if the current battlefield is an Arena match</summary>
    </return>
    <return name="isRegistered" type="number" apitype="1nil">
      <summary>1 if the current arena match is a ranked match</summary>
    </return>
  </function>
  <function name="AbandonQuest" type="function">
    <summary>Confirms abandoning a quest in your log</summary>
  </function>
  <function name="GetBonusBarOffset" type="function">
    <summary>Returns the bar offset for the bonus bar.</summary>
    <return name="offset" type="number">
      <summary>The offset amount that should be used for the bonus action bar.</summary>
    </return>
  </function>
  <function name="InitWorldMapPing" type="function">
    <summary>Resets the position of the ping frame (WorldMapPing) on the WorldMap.  There is no real reason to use this.</summary>
  </function>
  <function name="EquipItemByName" type="function">
    <summary>Equips an item by name, item link or item id</summary>
    <param />
  </function>
  <function name="ChannelModerator" type="function">
    <summary>Grants a player moderator status on the given channel</summary>
    <param name="channel" type="string">
      <summary>The name of the channel</summary>
    </param>
    <param name="fullname" type="string">
      <summary>The name of the player to give moderator status</summary>
    </param>
  </function>
  <function name="GetItemSpell" type="function">
    <summary>Returns information about the spell cast when using a given item</summary>
    <paramchoice>
      <param name="itemName" type="string">
        <summary>The name of the item to query</summary>
      </param>
      <param name="itemId" type="number">
        <summary>An itemId to query</summary>
      </param>
    </paramchoice>
    <return name="name" type="string">
      <summary>The name of the spell that is cast when using the given item.  These are internal spell names that can't be cast directly.</summary>
    </return>
    <return name="rank" type="string">
      <summary>The rank of the spell cast</summary>
    </return>
  </function>
  <function name="GetVideoCaps" type="function">
    <summary>Returns information about the video subsystem</summary>
    <return name="hasAnisotropic" type="number" />
    <return name="hasPixelShaders" type="number">
      <summary>Indicates if the video subsystem has pixel shaders</summary>
    </return>
    <return name="hasVertexShaders" type="number">
      <summary>Indicates if the video subsystem has vertex shaders</summary>
    </return>
    <return name="hasTrilinear" type="number" />
    <return name="hasTripleBufering" type="number">
      <summary>Indicates if the video subsystem supports triple buffering</summary>
    </return>
    <return name="maxAnisotropy" type="number" />
    <return name="hasHardwareCursor" type="number">
      <summary>Indicates if the video subsystem supports a hardware cursor</summary>
    </return>
  </function>
  <function name="GetQuestGreenRange" type="function">
    <summary>Returns the "green" range for quests</summary>
    <return name="range" type="number">
      <summary>The maximum level difference for a quest to show "green"</summary>
    </return>
  </function>
  <function name="InCinematic" type="function">
    <summary>Returns whether or not the character is viewing a cinematic.</summary>
    <return name="inCinematic" type="number" apitype="1nil">
      <summary>Is the character viewing a cinematic or not.</summary>
    </return>
  </function>
  <function name="GetTradePlayerItemLink" type="function">
    <summary>Returns a link for an item offered by the player in the trade window</summary>
    <param name="index" type="number">
      <summary>The index of the player's trade slot</summary>
    </param>
    <return name="link" type="string">
      <summary>The link for the given trade item</summary>
    </return>
  </function>
  <function name="GetLootRollItemLink" type="function">
    <summary>Returns an item link for the specified item</summary>
    <param name="id" type="number">
      <summary>The index of the loot roll.  Each new item that is rolled on increments this number by one so two items won't have the same roll index</summary>
    </param>
    <return name="link" type="string">
      <summary>An item link for the given loot roll item</summary>
    </return>
  </function>
  <function name="CommentatorSetTargetHeightOffset" type="function" />
  <function name="GetNumAuctionItems" type="function">
    <summary>Returns the number of auction items for a given type of listing</summary>
    <param name="type" type="string">
      <summary>The type of auction listing to query</summary>
    </param>
    <return name="numBatchAuctions" type="number">
      <summary>The number of auctions in the current page of the listing</summary>
    </return>
    <return name="totalAuctions" type="number">
      <summary>The number of total auctions available for the given listing</summary>
    </return>
  </function>
  <function name="CommentatorUpdateMapInfo" type="function" />
  <function name="type" type="function" />
  <function name="UnstablePet" type="function">
    <summary>Unstables the pet in a given stable slot.</summary>
    <param name="slot" type="number">
      <summary>The pet stable slot.</summary>
    </param>
  </function>
  <function name="CloseTradeSkill" type="function">
    <summary>Closes the tradeskill window, if it is open</summary>
  </function>
  <function name="BuySkillTier" type="function" />
  <function name="CanWithdrawGuildBankMoney" type="function">
    <summary>Returns whether or not the player can withdraw money from the guild bank</summary>
    <return name="canWithdraw" type="number" apitype="1nil">
      <summary>1 if the player can withdraw money from the guild bank, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumFactions" type="function">
    <summary>Returns the number of factions the player has encountered</summary>
    <return name="numFactions" type="number">
      <summary>The number of factions the player has encountered.</summary>
    </return>
  </function>
  <function name="GuildUninvite" type="function">
    <summary>Uninvites a player from the guild</summary>
    <param name="name" type="string">
      <summary>The name of the player to uninvite</summary>
    </param>
  </function>
  <function name="ToggleCollisionDisplay" type="function" />
  <function name="GuildPromote" type="function">
    <summary>Promotes a given plakyer to the next highest guild rank</summary>
    <param name="name" type="string">
      <summary>The name of the player to promote</summary>
    </param>
  </function>
  <function name="RunBinding" type="function">
    <summary>Runs a keybinding by name</summary>
    <param name="COMMAND" type="string">
      <summary>The keybinding command or action to run</summary>
    </param>
  </function>
  <function name="GuildInvite" type="function">
    <summary>Invites a player to your guild</summary>
    <param name="name" type="string">
      <summary>The name of the player to invite to your guild</summary>
    </param>
  </function>
  <function name="ConvertToRaid" type="function">
    <summary>Converts a party to a raid.  Does nothing if not in a party or not the party leader.</summary>
  </function>
  <function name="GuildDemote" type="function">
    <summary>Demotes a guild member by one guild rank</summary>
    <param name="name" type="string">
      <summary>A guild member's name</summary>
    </param>
  </function>
  <function name="GetQuestTimers" type="function">
    <summary>Returns a list of the remaining time of all active quest timers. </summary>
    <return name="..." type="number">
      <summary>A list of all active quest timers.</summary>
    </return>
  </function>
  <function name="CancelPendingLFG" type="function">
    <summary>Removes the player from all open LookingForGroup queues.</summary>
  </function>
  <function name="GuildControlSaveRank" type="function">
    <summary>Saves the settings for a guild rank</summary>
    <param name="name" type="string">
      <summary>The name of the guld rank</summary>
    </param>
  </function>
  <function name="ProcessMapClick" type="function">
    <summary>Possibly changes the WorldMap based on a mouse click</summary>
    <param name="x" type="number">
      <summary>The x coordinate of the click, as a number between 0 and 1</summary>
    </param>
    <param name="y" type="number">
      <summary>The y coordinate of the click, as a number between 0 and 1</summary>
    </param>
  </function>
  <function name="UnitIsConnected" type="function">
    <summary>Returns whether or not the given unit or player is connect (i.e. not Offline)</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of a player to query</summary>
      </param>
    </paramchoice>
    <return name="isConnected" type="number" apitype="1nil">
      <summary>1 if the player is connected, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumGossipActiveQuests" type="function">
    <summary>Returns the number of currently active quests in the gossip window</summary>
    <return name="num" type="number">
      <summary>The number of currently active quests in the gossip window</summary>
    </return>
  </function>
  <function name="GetTrainerServiceDescription" type="function">
    <summary>Returns the description of a given trainer service (spell, tradeskill, etc.)</summary>
    <param name="index" type="number">
      <summary>The index of a trainer service (class spell, tradeskill, etc.) to query</summary>
    </param>
    <return name="text" type="string">
      <summary>The description of the service</summary>
    </return>
  </function>
  <function name="GetActionCount" type="function">
    <summary>Returns the number of uses remaining for the given action slot</summary>
    <param name="slot" type="number">
      <summary>The action slot to check (1-120)</summary>
    </param>
    <return name="count" type="number">
      <summary>The number of uses left</summary>
    </return>
  </function>
  <function name="BuyGuildBankTab" type="function">
    <summary>Purchases the next available guild bank tab, without confirmation</summary>
  </function>
  <function name="setmetatable" type="function" />
  <function name="GetMirrorTimerInfo" type="function">
    <summary>Returns information about a mirror timer bar</summary>
    <param name="index" type="number">
      <summary>The index of the timer to query</summary>
    </param>
    <return name="timer" type="string">
      <summary>The name of the timer</summary>
    </return>
    <return name="value" type="number">
      <summary>The current value of the timer</summary>
    </return>
    <return name="maxvalue" type="number">
      <summary>The maximum value of the timer</summary>
    </return>
    <return name="scale" type="number">
      <summary>The scale to multiply the timer by</summary>
    </return>
    <return name="paused" type="number">
      <summary>If the timer is paused</summary>
    </return>
    <return name="label" type="string">
      <summary>The label to be displayed on the timer</summary>
    </return>
  </function>
  <function name="AcceptLFGMatch" type="function">
    <summary>Accepts a proposed LFG match</summary>
  </function>
  <function name="CommentatorExitInstance" type="function" />
  <function name="ConfirmPetUnlearn" type="function">
    <summary>Confirms unlearning a pet's skills</summary>
  </function>
  <function name="SetSelectedBattlefield" type="function">
    <summary>Selects a given battlefield in the battlemaster window</summary>
    <param name="index" type="number">
      <summary>The battlefield index to select</summary>
    </param>
  </function>
  <function name="UnitAttackPower" type="function">
    <summary>Returns the unit's melee attack power and modifiers</summary>
    <param name="unit" type="string">
      <summary>The unit to get information from. (Does not work for 'target')</summary>
    </param>
    <return name="base" type="number">
      <summary>The unit's base attack power</summary>
    </return>
    <return name="posBuff" type="number">
      <summary>The total effect of positive buffs to attack power</summary>
    </return>
    <return name="negBuff" type="number">
      <summary>The total effect of negative buffs to attack power</summary>
    </return>
  </function>
  <function name="MovieRecording_IsCodecSupported" type="function">
    <summary>Returns whether or not a given video recording codec is supported by the client</summary>
    <param name="codecName" type="string">
      <summary>The name of a video compression codec</summary>
    </param>
    <return name="isSupported" type="boolean">
      <summary>true if the codec is supported by the client, otherwise false</summary>
    </return>
  </function>
  <function name="CanGuildPromote" type="function">
    <summary>Returns whether or not the player has the ability to promote other players within the guild.</summary>
    <return name="canPromote" type="number" apitype="1nil">
      <summary>1 if the player has the ability to promote within the guild, otherwise nil</summary>
    </return>
  </function>
  <function name="randomseed" type="function">
    <summary>This function is simply an alias for math.randomseed</summary>
  </function>
  <function name="EquipCursorItem" type="function">
    <summary>Attempts to equip the item held on the cursor into a specific inventory slot</summary>
    <param name="slot" type="number">
      <summary>An inventory slot id</summary>
    </param>
  </function>
  <function name="IsFlying" type="function">
    <summary>Returns whether or not the player is currently flying</summary>
    <return name="isFlying" type="number" apitype="1nil">
      <summary>1 if the player is currently flying, otherwise nil</summary>
    </return>
  </function>
  <function name="GetVoiceCurrentSessionID" type="function">
    <summary>Returns a identifier for your current voice session</summary>
    <return name="id" type="number">
      <summary>The voice session ID</summary>
    </return>
  </function>
  <function name="max" type="function">
    <summary>This function is simply an alias for math.max</summary>
  </function>
  <function name="SetEuropeanNumbers" type="function">
    <summary>Enables using comma as the decimal separator</summary>
    <param name="enable" type="boolean">
      <summary>true to enable european numbers, otherwise nil</summary>
    </param>
  </function>
  <function name="GetSocketTypes" type="function">
    <summary>Returns the color of a given gem socket in the socketing UI</summary>
    <param name="index" type="number">
      <summary>The index of the socket to query</summary>
    </param>
    <return name="gemColor" type="string">
      <summary>The color of the given gem socket</summary>
    </return>
  </function>
  <function name="GetQuestLogQuestText" type="function">
    <summary>Retrieves the text fields for the quest log details panel of the currently active quest.</summary>
    <return name="questDescription" type="string">
      <summary>The description of the quest.</summary>
    </return>
    <return name="questObjectives" type="string">
      <summary>The objectives of the quest.</summary>
    </return>
  </function>
  <function name="GetActionCooldown" type="function">
    <summary>Returns cooldown information about a given action slot</summary>
    <param name="slot" type="number">
      <summary>The action slot to query for cooldown information</summary>
    </param>
    <return name="start" type="number">
      <summary>The value of GetTime() at the moment the cooldown began, or 0</summary>
    </return>
    <return name="duration" type="number">
      <summary>The length of the cooldown, or 0</summary>
    </return>
    <return name="enable" type="number">
      <summary>1 if the cooldown is enabled, otherwise 0</summary>
    </return>
  </function>
  <function name="SetChatWindowShown" type="function">
    <summary>Sets if a chat window is shown in chat-cache.txt</summary>
    <param name="index" type="number">
      <summary>The index of the chat window</summary>
    </param>
    <param name="shown" type="number" apitype="1nil">
      <summary>1 to show the window, nil to hide</summary>
    </param>
  </function>
  <function name="GetNumGuildBankTabs" type="function">
    <summary>Gives the number of purchased tabs for the guildbank</summary>
    <return name="numTabs" type="number">
      <summary>Number of purchased guildbank tabs.  This value returns 0 if the player is unguilded.</summary>
    </return>
  </function>
  <function name="ClickTargetTradeButton" type="function">
    <summary>Simulates clicking on a specific slot in the target trade window.</summary>
    <param name="index" type="number">
      <summary>The index of a trade slot on the target's side of the trade window</summary>
    </param>
  </function>
  <function name="GetPartyMember" type="function">
    <summary>Returns whether or not a given party index is exists in the player's party</summary>
    <param name="index" type="number">
      <summary>The index of the party member to query (1-4)</summary>
    </param>
    <return name="hasMember" type="number" apitype="1nil">
      <summary>1 if there is a party member at the given index of the player's party, otherwise nil</summary>
    </return>
  </function>
  <function name="GetCurrentMapContinent" type="function">
    <summary>Returns the current map continent.</summary>
    <return name="continent" type="number">
      <summary>The continent the player is currently viewing on the world map, or the continent the player currently resides on.</summary>
    </return>
  </function>
  <function name="SetGuildRosterShowOffline" type="function">
    <summary>Sets the value for the "Show Offline" guild setting</summary>
    <param name="showOffline" type="number" apitype="1nil">
      <summary>The value to set for the "Show Offline" guild setting</summary>
    </param>
  </function>
  <function name="GetQuestLogRewardTitle" type="function">
    <summary>Returns the title you will be rewarded for completing the currently-displayed quest</summary>
  </function>
  <function name="DeclineArenaTeam" type="function">
    <summary>Declines an arena team invitation</summary>
  </function>
  <function name="GetBattlefieldWinner" type="function">
    <summary>Returns the winner of the current battleground or arena match</summary>
    <return name="wWinner" type="number">
      <summary>The index of the winning team, or nil if not in a match or the match is not yet over.</summary>
    </return>
  </function>
  <function name="GetReadyCheckTimeLeft" type="function">
    <summary>Returns the amount of time left on the current ready check</summary>
  </function>
  <function name="GetTrainerServiceLevelReq" type="function">
    <summary>Returns the level requirement for a trainer service</summary>
    <param name="index" type="number">
      <summary>The index of the trainer service</summary>
    </param>
    <return name="reqLevel" type="number">
      <summary>The required level to learn a given service, otherwise nil</summary>
    </return>
  </function>
  <function name="GetTrainerServiceItemLink" type="function">
    <summary>Returns an item link for a given trainer service item</summary>
    <param name="index" type="number">
      <summary>The index of a service in the trainer window</summary>
    </param>
    <return name="link" type="string">
      <summary>The item link for the given trainer service, or nil</summary>
    </return>
  </function>
  <function name="CanEditMOTD" type="function">
    <summary>Returns whether or not the player can edit the guild MOTD</summary>
    <return name="canEdit" type="number" apitype="1nil">
      <summary>1 if the player can edit the guild MOTD, otherwise nil</summary>
    </return>
  </function>
  <function name="GetPartyLeaderIndex" type="function">
    <summary>Returns the index of the current party leader</summary>
    <return name="index" type="number">
      <summary>The index of the party leader, or 0.</summary>
    </return>
  </function>
  <function name="PickupContainerItem" type="function">
    <summary>Picks up an item from a container and holds it on the cursor</summary>
    <param name="index" type="number">
      <summary>The index of the container that holds the item to be picked up</summary>
    </param>
    <param name="slot" type="number">
      <summary>The slot that contains the item to be picked up</summary>
    </param>
  </function>
  <function name="CloseAuctionHouse" type="function">
    <summary>Closes the auction house UI and stops all data retrieval.</summary>
  </function>
  <function name="UnitIsSilenced" type="function">
    <summary>Returns whether or not the player is silenced on the specified voice channel.</summary>
    <param name="name" type="string">
      <summary>The name of the player to query</summary>
    </param>
    <param name="channel" type="string">
      <summary>Channel to query for voice status.</summary>
    </param>
    <return name="silenced" type="number" apitype="1nil">
      <summary>1 if the unit is silenced on this channel, nil if not.</summary>
    </return>
  </function>
  <function name="SetMapZoom" type="function">
    <summary>Sets the worldmap to a specific continent or zone within that continent.</summary>
    <param name="continentIndex" type="number">
      <summary>Content index identifier. Use GetMapContinents() for a list. 0 and -1 are valid inputs for Azeroth and the cosmic map.</summary>
    </param>
    <param name="zoneIndex" type="number">
      <summary>Optional argument to display a specific zone within a continent. Use GetMapZones(continentIndex) for a list.</summary>
    </param>
  </function>
  <function name="ReportBug" type="function" />
  <function name="GetGMTicket" type="function">
    <summary>Requests a GM ticket update from the server</summary>
  </function>
  <function name="GetAuctionItemSubClasses" type="function">
    <summary>Returns a list of subclasses that are valid for a specific auction item class (e.g. One-Handed Axes, Two-Handed Axes, Bows, Guns under Weapons; Miscellaneous, Cloth, Leather and others under Amor, etc.).</summary>
    <param name="index" type="number">
      <summary>The index of the Auction Item Class you want to query for Sub-Classes. The number is from 1 to #{GetAuctionItemClasses()}</summary>
    </param>
    <return name="..." type="string">
      <summary>A list of the sub classes attached to the queried auction class, or nil for classes which have no subclasses.</summary>
    </return>
  </function>
  <function name="getmetatable" type="function" />
  <function name="GetTradeSkillItemLevelFilter" type="function">
    <summary>Returns the current values for the tradeskill item level filter</summary>
    <return name="minLevel" type="number">
      <summary>Lowest required level of items to show in filtered TradeSkill list</summary>
    </return>
    <return name="maxLevel" type="number">
      <summary>Highest required level of items to show in filtered TradeSkill list</summary>
    </return>
  </function>
  <function name="IsInventoryItemLocked" type="function">
    <summary>Returns whether or not the given inventory slot is locked</summary>
    <param name="slot" type="number">
      <summary>An inventory slot id</summary>
    </param>
    <return name="isLocked" type="number" apitype="1nil">
      <summary>1 if the item in the inventory slot is locked, otherwise nil</summary>
    </return>
  </function>
  <function name="GetTrackingTexture" type="function">
    <summary>Returns the texture of the active tracking buff, if one is active</summary>
    <return name="texture" type="string">
      <summary>The path of the active tracking buff, if there is one.</summary>
    </return>
  </function>
  <function name="GetTitleText" type="function">
    <summary>Returns the title text for the currently displayed quest.</summary>
    <return name="text" type="string">
      <summary>The title text for the currently displayed quest</summary>
    </return>
  </function>
  <function name="GetTotemInfo" type="function">
    <summary>Returns information on a currently active totem</summary>
    <param name="slot" type="number">
      <summary>The element of the totem you want to destroy</summary>
    </param>
    <return name="haveTotem" type="boolean">
      <summary>Indicates whether you have an active totem of the given type</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the totem</summary>
    </return>
    <return name="startTime" type="number">
      <summary>The value of GetTime() when the totem was created</summary>
    </return>
    <return name="duration" type="number">
      <summary>The total duration the totem will last (in seconds)</summary>
    </return>
    <return name="icon" type="string">
      <summary>The texture path to the totem's icon</summary>
    </return>
  </function>
  <function name="GetActionTexture" type="function">
    <summary>Returns the texture for the given action slot</summary>
    <param name="slot" type="number">
      <summary>Action ID to query.</summary>
    </param>
    <return name="texture" type="string">
      <summary>Texture of the slot.</summary>
    </return>
  </function>
  <function name="GetNumBattlefieldStats" type="function">
    <summary>Returns the number of battlefield specific columns to be displayed in the final score frame</summary>
    <return name="numStats" type="number">
      <summary>The number of battlefield specific columns to be displayed in the final score frame</summary>
    </return>
  </function>
  <function name="GetCurrentMultisampleFormat" type="function">
    <summary>Returns the index of the currently selected multi-sample format</summary>
    <return name="index" type="number">
      <summary>The index of the currently selected multi-sample format.</summary>
    </return>
  </function>
  <function name="CanGuildDemote" type="function">
    <summary>Returns whether or not the player can demote lower ranked guild members</summary>
    <return name="canDemote" type="number" apitype="1nil">
      <summary>1 if the player can demote lower ranked guild members.  This is determined by the player's guild rank permissions</summary>
    </return>
  </function>
  <function name="SortAuctionSetSort" type="function">
    <summary>Sets the server-side sort to be applied to the items returned by an Auction House Query</summary>
    <param name="type" type="string">
      <summary>The auction house listing to edit</summary>
    </param>
    <param name="sort" type="string">
      <summary>The sort type you want to apply</summary>
    </param>
    <param name="reversed" type="boolean">
      <summary>True if you want the sort to be an inverse one (Z -&gt; A), false if you want it to be normal (A -&gt; Z)</summary>
    </param>
  </function>
  <function name="GetGossipText" type="function">
    <summary>Returns the text that is displayed when initially conversing with an NPC</summary>
    <return name="text" type="string">
      <summary>The NPC gossip text, displayed in the initial conversation dialog</summary>
    </return>
  </function>
  <function name="GetGuildBankTransaction" type="function">
    <summary>Returns information about a specific guild bank item transaction</summary>
    <param name="tab" type="number">
      <summary>The index of the guild bank tab</summary>
    </param>
    <param name="index" type="number">
      <summary>The index of the log entry</summary>
    </param>
    <return name="type" type="string">
      <summary>The type of transaction</summary>
    </return>
    <return name="name" type="string">
      <summary>The name of the player who completed the transaction</summary>
    </return>
    <return name="itemLink" type="string">
      <summary>The item link for the item involved</summary>
    </return>
    <return name="count" type="number">
      <summary>The number of items in the stack</summary>
    </return>
    <return name="tab1" type="number">
      <summary>The source tab if the item was moved from one tab to another</summary>
    </return>
    <return name="tab2" type="number">
      <summary>The destination tab if the item was moved from one tab to another</summary>
    </return>
    <return name="year" type="number">
      <summary>The number of years ago the transaction occured</summary>
    </return>
    <return name="month" type="number">
      <summary>The number of months ago the transaction occured</summary>
    </return>
    <return name="day" type="number">
      <summary>The number of days ago the transaction occured</summary>
    </return>
    <return name="hour" type="number">
      <summary>The number of hours ago the transaction occured</summary>
    </return>
  </function>
  <function name="GetExistingLocales" type="function">
    <summary>Returns the locale packs currently available to the client</summary>
    <return name="..." type="string">
      <summary>A list of the locale packs currently available to the client</summary>
    </return>
  </function>
  <function name="CanGuildInvite" type="function">
    <summary>Returns whether or not the player can invite members to their guild</summary>
    <return name="canInvite" type="number" apitype="1nil">
      <summary>1 if the player can invite members to their guild, otherwise nil</summary>
    </return>
  </function>
  <function name="GetSpellCritChanceFromIntellect" type="function">
    <summary>Returns the percent chance to crit granted by Intellect</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query.  This function appears to only work for "player" units</summary>
    </param>
    <return name="critChance" type="number">
      <summary>The percent chance to crit granted by the player's Intellect stat</summary>
    </return>
  </function>
  <function name="CastSpell" type="function">
    <param name="spellID" type="number">
      <summary>The index of a spell in the spellbook</summary>
    </param>
    <param name="bookType" type="string">
      <summary>The type of spellbook to use</summary>
    </param>
  </function>
  <function name="IsLeftAltKeyDown" type="function">
    <summary>Returns whether or not the left Alt key is currently held down</summary>
    <return name="isDown" type="number" apitype="1nil">
      <summary>1 if the left Alt key on the keyboard is currently held down</summary>
    </return>
  </function>
  <function name="GetMacroIconInfo" type="function">
    <summary>Returns the texture for a given macro icon index</summary>
    <param name="index" type="number">
      <summary>The index of a macro icon</summary>
    </param>
    <return name="texture" type="string">
      <summary>The path to the macro's icon texture</summary>
    </return>
  </function>
  <function name="GetShapeshiftForm" type="function">
    <summary>Returns the current shapeshift form index</summary>
    <return name="index" type="number">
      <summary>The current shapeshift form</summary>
    </return>
  </function>
  <function name="date" type="function" />
  <function name="SetChannelWatch" type="function" />
  <function name="GetArenaTeam" type="function">
    <summary>Returns information about one of the player's arena teams.</summary>
    <param name="index" type="number">
      <summary>The index of the arena team.  These are indexed from smallest to largest, with the first team (normally 2v2) being 1.</summary>
    </param>
    <return name="teamName" type="string">
      <summary>The name of the arena team</summary>
    </return>
    <return name="teamSize" type="number">
      <summary>The size of the team (2 for 2v2, 3 for 2v2, etc.)</summary>
    </return>
    <return name="teamRating" type="number">
      <summary>The team's rating</summary>
    </return>
    <return name="teamPlayed" type="number">
      <summary>The number of games played in the current arena period</summary>
    </return>
    <return name="teamWins" type="number">
      <summary>The number of games won in the current arena period</summary>
    </return>
    <return name="seasonTeamPlayer" type="number">
      <summary>The number of games played in the current arena season</summary>
    </return>
    <return name="seasonTeamWins" type="number">
      <summary>The number of games won in the current arena season</summary>
    </return>
    <return name="playerPlayed" type="number">
      <summary>The number of games the player has played in the current arena period</summary>
    </return>
    <return name="seasonPlayerPlayed" type="number">
      <summary>The number of games the player has played in the current arena season</summary>
    </return>
    <return name="teamRank" type="number">
      <summary>The current team ranking</summary>
    </return>
    <return name="playerRating" type="number">
      <summary>The player's personal rating</summary>
    </return>
    <return name="bg_red" type="number">
      <summary>The red component color value for the background (0.0-1.0)</summary>
    </return>
    <return name="bg_green" type="number">
      <summary>The green component color value for the background (0.0-1.0)</summary>
    </return>
    <return name="bg_blue" type="number">
      <summary>The blue component color value for the background (0.0-1.0)</summary>
    </return>
    <return name="emblem" type="number">
      <summary>The index of the team's emblem graphic</summary>
    </return>
    <return name="emblem_red" type="number">
      <summary>The red component color value for the emblem (0.0-1.0)</summary>
    </return>
    <return name="emblem_green" type="number">
      <summary>The green component color value for the emblem (0.0-1.0)</summary>
    </return>
    <return name="emblem_blue" type="number">
      <summary>The blue component color value for the emblem (0.0-1.0)</summary>
    </return>
    <return name="border" type="number">
      <summary>The index of the team's border graphic</summary>
    </return>
    <return name="border_red" type="number">
      <summary>The red component color value for the border (0.0-1.0)</summary>
    </return>
    <return name="border_green" type="number">
      <summary>The green component color value for the border (0.0-1.0)</summary>
    </return>
    <return name="border_blue" type="number">
      <summary>The blue component color value for the border (0.0-1.0)</summary>
    </return>
  </function>
  <function name="SetRaidTarget" type="function">
    <summary>Sets a raid target marker on the given unit</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitId of the unit to mark</summary>
      </param>
      <param name="name" type="string">
        <summary>The full name of the player to mark</summary>
      </param>
    </paramchoice>
  </function>
  <function name="GetSelectedBattlefield" type="function">
    <summary>Returns the currently selected battlefield index</summary>
    <return name="index" type="number">
      <summary>The current selected battlefield index, in the battlemaster window</summary>
    </return>
  </function>
  <function name="GetSelectedAuctionItem" type="function">
    <summary>Returns the index of the currently selected auction house item</summary>
    <param name="type" type="string">
      <summary>The type of auction house listing</summary>
    </param>
    <return name="index" type="number">
      <summary>The index of the currently selected auction item</summary>
    </return>
  </function>
  <function name="GetScreenWidth" type="function">
    <summary>Query the width of the screen.</summary>
    <return name="screenWidth" type="number">
      <summary>The width of the client's screen, in pixels.  Note that this may not be the width you expect from the video settings, for example '1680x1050' reports back a screen width of 1595.844</summary>
    </return>
  </function>
  <function name="GetNumPartyMembers" type="function">
    <summary>Returns the number of players in your party.</summary>
    <return name="numPartyMembers" type="number">
      <summary>Number of members in your party.</summary>
    </return>
  </function>
  <function name="PositionWorldMapArrowFrame" type="function">
    <param name="point" type="string">
      <summary>The anchor point on the WorldMapArrowFrame</summary>
    </param>
    <param name="frame" type="string">
      <summary>The frame that WorldMapArrowFrame should be anchored relative to</summary>
    </param>
    <param name="relativePoint" type="string" optional="true">
      <summary>The anchor point on the relative frame</summary>
    </param>
    <param name="offsetX" type="number" optional="true">
      <summary>The horizontal offset from the given anchor position, in pixels</summary>
    </param>
    <param name="offsetY" type="number" optional="true">
      <summary>The vertical offset from the given anchor position, in pixels</summary>
    </param>
  </function>
  <function name="strsub" type="function">
    <summary>This function is simply an alias for string.sub</summary>
  </function>
  <function name="GetNumBindings" type="function">
    <summary>Returns the number of key binding actions listed in the Key Bindings window.</summary>
    <return name="numBindings" type="number">
      <summary>The number of key binding actions available to be bound to key combinations</summary>
    </return>
  </function>
  <function name="KBSetup_GetTotalArticleCount" type="function">
    <summary>Returns the number of "Top Issues" articles</summary>
    <return name="numArticles" type="number">
      <summary>The total number of "Top Issues" articles</summary>
    </return>
  </function>
  <function name="GetCVarAbsoluteMax" type="function">
    <summary>Returns the absolute maximum value allowed for a given CVar</summary>
    <param name="cvar" type="string">
      <summary>The name of the CVar to query</summary>
    </param>
    <return name="min" type="number">
      <summary>The absolute maximum value allowed for the given CVar</summary>
    </return>
  </function>
  <function name="CloseGuildRoster" type="function">
    <summary>Closes the Guild Roster UI frame</summary>
  </function>
  <function name="debugprofilestart" type="function">
    <summary>Starts and resets the high resolution debug timer</summary>
  </function>
  <function name="GetCritChanceFromAgility" type="function">
    <summary>Returns the amount of critical strike chance given by the agility stat</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit to query</summary>
    </param>
    <return name="critChance" type="number">
      <summary>The percentage crit chance granted by the agility stat</summary>
    </return>
  </function>
  <function name="GetPetActionsUsable" type="function">
    <summary>Returns whether or not the pet's actions are usable</summary>
    <return name="petActionsUsable" type="number" apitype="1nil">
      <summary>1 if the pet's actions are usable, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumActiveQuests" type="function">
    <summary>Returns the number of currently active quests by this player for this NPC</summary>
    <return name="numActiveQuests" type="number">
      <summary>Number of currently active quests from this NPC</summary>
    </return>
  </function>
  <function name="IsRealPartyLeader" type="function">
    <summary>Returns whether or not the player is the leader of their "real party"</summary>
    <return name="isLeader" type="number" apitype="1nil">
      <summary>1 if the player is the party leader of the "real party", otherwise nil</summary>
    </return>
  </function>
  <function name="GetTrainerServiceSkillReq" type="function">
    <summary>Returns the skill requirement for a a given trainer service</summary>
    <param name="index" type="number">
      <summary>The index of a trainer service</summary>
    </param>
    <return name="skill" type="string">
      <summary>The name of the required skill</summary>
    </return>
    <return name="rank" type="number">
      <summary>The rank required</summary>
    </return>
    <return name="hasReq" type="number" apitype="1nil">
      <summary>1 if the player fulfills the requirement, otherwise nil</summary>
    </return>
  </function>
  <function name="ClearSendMail" type="function">
    <summary>Clears the send mail window, removing all items, money, text</summary>
  </function>
  <function name="GetPartyAssignment" type="function">
    <summary>Returns whether or not a player is assigned a specific role (maintank, mainassist)</summary>
    <paramchoice>
      <param name="unit" type="string" apitype="unitid">
        <summary>The unitid to query</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="isAssigned" type="number" apitype="1nil">
      <summary>1 if the player is assigned the specified role, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumGossipOptions" type="function">
    <summary>Returns the number of options in the current gossip frame</summary>
    <return name="numOptions" type="number">
      <summary>Number of gossip options available in the current instance</summary>
    </return>
  </function>
  <function name="ShowingCloak" type="function">
    <summary>Returns whether or not the "Show Cloak" setting is currently checked</summary>
    <return name="isShown" type="number" apitype="1nil">
      <summary>1 if the cloak is currently set to be shown, otherwise nil</summary>
    </return>
  </function>
  <function name="ResetCursor" type="function">
    <summary>Resets the mouse cursor to the default glove pointer</summary>
  </function>
  <function name="CloseTabardCreation" type="function">
    <summary>Closes the tabard creation window</summary>
  </function>
  <function name="GetNumWhoResults" type="function">
    <summary>Returns the number of results from a who request</summary>
    <return name="numResults" type="number">
      <summary>The number of results returned</summary>
    </return>
    <return name="totalCount" type="number">
      <summary>The number of actual results</summary>
    </return>
  </function>
  <function name="AcceptArenaTeam" type="function">
    <summary>Accept an invitation to join an arena team</summary>
  </function>
  <function name="GetTrainerServiceInfo" type="function">
    <summary>Returns information about a service in the trainer window</summary>
    <param name="index" type="number">
      <summary>The index of a line in the trainer window</summary>
    </param>
    <return name="serviceName" type="string">
      <summary>The name of the service</summary>
    </return>
    <return name="serviceSubText" type="string">
      <summary>The subtext (rank) of the service</summary>
    </return>
    <return name="serviceType" type="string">
      <summary>The type of the service</summary>
    </return>
  </function>
  <function name="CursorHasMoney" type="function">
    <summary>Returns whether or not the cursor is currently holding money</summary>
    <return name="hasMoney" type="number" apitype="1nil">
      <summary>1 if the cursor is currently holding money, otherwise nil</summary>
    </return>
  </function>
  <function name="GetNumSavedInstances" type="function">
    <summary>Returns the number of instances the player is saved to</summary>
    <return name="savedInstances" type="number">
      <summary>The number of instances the player is currently saved to</summary>
    </return>
  </function>
  <function name="GetActionBarToggles" type="function">
    <summary>Returns the current visibility settings for the four secondary action bars</summary>
    <return name="showBar1" type="number" apitype="1nil">
      <summary>1 if the interface option is set to show the Bottom Left ActionBar, otherwise nil</summary>
    </return>
    <return name="showBar2" type="number" apitype="1nil">
      <summary>1 if the interface option is set to show the Bottom Right ActionBar, otherwise nil</summary>
    </return>
    <return name="showBar3" type="number" apitype="1nil">
      <summary>1 if the interface option is set to show the Right ActionBar, otherwise nil</summary>
    </return>
    <return name="showBar4" type="number" apitype="1nil">
      <summary>1 if the interface option is set to show the Right ActionBar 2, otherwise nil</summary>
    </return>
  </function>
  <function name="SetFarclip" type="function">
    <summary>Sets the value of the "Terrain Distance" slider in the Video Options</summary>
    <param name="value" type="number">
      <summary>The value of the "Terrain Distance" slider in the Video Options</summary>
    </param>
  </function>
  <function name="GetAdjustedSkillPoints" type="function" />
  <function name="GetActiveTitle" type="function">
    <summary>Returns the name of an active quest in the QuestFrame.</summary>
    <param name="index" type="number">
      <summary>The index of an active quest in the QuestFrame</summary>
    </param>
    <return name="title" type="string">
      <summary>Title of the active quest.</summary>
    </return>
  </function>
  <function name="PitchDownStart" type="function" />
  <function name="GetReadyCheckStatus" type="function">
    <summary>Gets the given player's response to a ready check</summary>
    <param name="unit" type="string" apitype="unitid">
      <summary>The unit in question</summary>
    </param>
    <return name="status" type="string" />
  </function>
  <function name="GetGuildRosterShowOffline" type="function">
    <summary>Returns whether or not the "Show Offline" setting is enabled in the Guild tab</summary>
    <return name="showOffline" type="number" apitype="1nil">
      <summary>1 if the "Show Offline" setting is enabled in the Guild tab, otherwise nil</summary>
    </return>
  </function>
  <function name="IsAttackSpell" type="function">
    <summary>Returns whether or not a given spell is an "attack spell"</summary>
    <paramchoice>
      <param name="spellId" type="number">
        <summary>The index of a spell in the spellbook</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of a spell</summary>
      </param>
    </paramchoice>
    <return name="isAttack" type="number" apitype="1nil">
      <summary>1 if the spell is an "attack spell", otherwise nil. This is used by the default user interface to indicate if the spell should flash when attacking</summary>
    </return>
  </function>
  <function name="MovieRecording_IsCompressing" type="function">
    <summary>Returns whether or not the client is currently compressing a recording</summary>
    <return name="isCompressing" type="boolean">
      <summary>true if the client is currently compressing a recording, otherwise false</summary>
    </return>
  </function>
  <function name="GetMuteStatus" type="function">
    <summary>Returns whether or not the given player or unitId is muted</summary>
    <paramchoice>
      <param name="unitId" type="string" apitype="unitid">
        <summary>The unitId to query</summary>
      </param>
      <param name="fullname" type="string">
        <summary>The name of the player to query</summary>
      </param>
    </paramchoice>
    <return name="muteStatus" type="number" apitype="1nil">
      <summary>1 if the player is muted, otherwise nil</summary>
    </return>
  </function>
  <function name="GetMultisampleFormats" type="function">
    <summary>Returns the available multi-sample formats</summary>
    <return name="color" type="number">
      <summary>The color depth as a number.  Possible values would include 16 for 16-bit color depth, 24 for 24-bit, etc.</summary>
    </return>
    <return name="depth" type="number">
      <summary>The video depth in bits</summary>
    </return>
    <return name="multisample" type="number">
      <summary>The multisampling setting</summary>
    </return>
    <return name="...">
      <summary>A list of color, depth, multisample values listing the available multi-sample formats available to the client</summary>
    </return>
  </function>
  <function name="GetArmorPenetration" type="function">
    <summary>Returns the player's current armor penetration</summary>
  </function>
  <function name="CastPetAction" type="function">
    <summary>Casts a pet action on a specific target</summary>
    <param name="index" type="number">
      <summary>The index of a pet action, in the pet's action bar</summary>
    </param>
    <param name="target" type="string" apitype="unitid">
      <summary>The unit to use as the target of the given action</summary>
    </param>
  </function>
  <function name="GetFarclip" type="function">
    <summary>Returns the value of the "Terrain Distance" video option</summary>
    <return name="distance" type="number">
      <summary>The distance that corresponds to Terrain Distance option in Video Options</summary>
    </return>
  </function>
  <function name="ListChannels" type="function">
    <summary>Prints a list of the channels to which the player currently belongs to DEFAULT_CHAT_FRAME</summary>
  </function>
  <function name="GetMacroIndexByName" type="function">
    <summary>Converts a macro name to macro index</summary>
    <param name="name" type="string">
      <summary>The name of a macro</summary>
    </param>
    <return name="index" type="number">
      <summary>The index of the given named macro, or 0</summary>
    </return>
  </function>
  <function name="DepositGuildBankMoney" type="function">
    <summary>Deposits money into the guild bank</summary>
    <param name="money" type="number">
      <summary>The amount of money to deposit in copper</summary>
    </param>
  </function>
  <function name="GetBuybackItemLink" type="function">
    <summary>Returns the item link for an item in the buyback window</summary>
    <param name="slot" type="number">
      <summary>The index of a slot in the vendor buyback window</summary>
    </param>
    <return name="link" type="string">
      <summary>The item link for the item in the given buyback slot</summary>
    </return>
  </function>
  <function name="SelectGossipOption" type="function">
    <summary>Selects an option in the NPC dialog (gossip) window</summary>
    <param name="index" type="number">
      <summary>The option in the NPC gossip window to select, from 1 to GetNumGossipOptions()</summary>
    </param>
    <param name="text" type="string" optional="true">
      <summary>The text of the string to send on confirmation.</summary>
    </param>
    <param name="confirm" type="boolean" optional="true">
      <summary>true to confirm, false or nil to not confirm</summary>
    </param>
  </function>
  <function name="GetInventoryItemDurability" type="function">
    <summary>Returns the durability stats for a given item</summary>
    <param name="slot" type="number">
      <summary>The inventory slotid to query.  This slotid should be generated using the GetInventorySlotInfo function.</summary>
    </param>
    <return name="durability" type="number">
      <summary>The current durability</summary>
    </return>
    <return name="max" type="number">
      <summary>The maximum durability</summary>
    </return>
  </function>
  <function name="GuildControlGetNumRanks" type="function">
    <summary>Returns the number of guild ranks in the guild including the guild master.</summary>
    <return name="numRanks" type="number">
      <summary>Number of guild ranks</summary>
    </return>
  </function>
  <function name="DoTradeSkill" type="function">
    <summary>Casts a trade skill, optionally multiple times</summary>
    <param name="index" type="number">
      <summary>The index of the skill</summary>
    </param>
    <param name="repeat" type="number" optional="true">
      <summary>The number of time to repeat the craft</summary>
    </param>
  </function>
  <function name="RegisterForSavePerCharacter" type="function" />
  <function name="GetAddOnMemoryUsage" type="function">
    <summary>Returns the amount of memory used by a given addon</summary>
    <paramchoice>
      <param name="index" type="number">
        <summary>The index of the addon, must be in the range of 1 to GetNumAddons().</summary>
      </param>
      <param name="name" type="string">
        <summary>The name of the addon, as it appears in its folder name.</summary>
      </param>
    </paramchoice>
    <return name="mem" type="number">
      <summary>The memory usage of the addon, in kilobytes</summary>
    </return>
  </function>
  <function name="GetCurrentTitle" type="function">
    <summary>Returns the currently selected player title</summary>
    <return name="currentTitle" type="number">
      <summary>The currently selected title.  If the player has no available titles this will return 0.  If the player has available titles and has none selected, this will return -1.</summary>
    </return>
  </function>
  <function name="IsWindowsClient" type="function">
    <summary>Checks if the client's OS is Windows</summary>
    <return name="isWindows" type="boolean">
      <summary>True if the user runs Windows, false if Mac or Linux</summary>
    </return>
  </function>
  <function name="GetTimeToWellRested" type="function">
    <return name="seconds" type="number">
      <summary>The number of seconds until the player would reach full rested state</summary>
    </return>
  </function>
  <function name="CastSpellByName" type="function">
    <param name="name" type="string">
      <summary>The name of a spell to cast</summary>
    </param>
    <param name="target" type="string" apitype="unitid">
      <summary>The unit to use as the target of the given action</summary>
    </param>
  </function>
</doc>